C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: レコードの更新


(過去ログ 45 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■24300 / inTopicNo.1)  レコードの更新
  
□投稿者/ データベース (9回)-(2008/09/01(Mon) 14:07:40)

分類:[.NET 全般] 

おせわになっております。
現在vb2005SQLデータベース勉強中です。
下のプログラムを見ていただいてからおこたえになってください。
デザイン DataGridView1、Button1、Button2
ボタン1をクリックしたときにDataGridView1にSQLデータベース表示
ボタン2を押したときにA200402さんの住所を更新してSQLデータベースをDataGridView1に表示、といったプログラムなんですが。
初めてコードをここに書いたので説明がわかりにくいかと思いますがご了承ください。
ここから聞きたいことなんですがこれはあくまでもボタンが押されたときにA200402さんの住所を更新なんですが、これをテキストボックスに更新したい値を書いてボタンを押したときに更新できるプログラムをくみたいのです。
できれば出いいのでヒントだけでももらえないでしょうか?
ご指導いただければたすかります。
それではよろしくお願いします。


Imports System.Data.OleDb
Public Class Form1
Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'▼データ取得
Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\starsystem.STARSYST-DE959A\デスクトップ\SQL問題\Sql_SS1.mdb")
Dim SQLCm As OleDbCommand = Cn.CreateCommand
Dim Adapter As New OleDbDataAdapter(SQLCm)
Dim Table As New DataTable

SQLCm.CommandText = "SELECT * FROM usr "
Adapter.Fill(Table)


'Dim Value As String
DataGridView1.DataSource = Table

' ''TextBox1.Text = SQLCm.CommandText
''Cn.Open()
''Value = SQLCm.ExecuteScalar
''Cn.Close()

Adapter.Dispose()
SQLCm.Dispose()
Cn.Dispose()
End Sub

Private Sub TextBox9_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\starsystem.STARSYST-DE959A\デスクトップ\SQL問題\Sql_SS1.mdb")
Dim SQLCm As OleDbCommand = Cn.CreateCommand

SQLCm.CommandText = "UPDATE usr SET city = '岐阜県岐阜市' WHERE user_id ='A200402'"

Cn.Open()
SQLCm.ExecuteNonQuery()
Cn.Close()

MsgBox("変更しました。")
End Sub
End Class
引用返信 編集キー/
■24301 / inTopicNo.2)  Re[1]: レコードの更新
□投稿者/ データベース (10回)-(2008/09/01(Mon) 14:13:57)

> Imports System.Data.OleDb
> Public Class Form1
> Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
> End Sub
>
> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
> > Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\starsystem.STARSYST-DE959A\デスクトップ\SQL問題\Sql_SS1.mdb")
> Dim SQLCm As OleDbCommand = Cn.CreateCommand
> Dim Adapter As New OleDbDataAdapter(SQLCm)
> Dim Table As New DataTable
>
> SQLCm.CommandText = "SELECT * FROM usr "
> Adapter.Fill(Table)
>
>
>
> Adapter.Dispose()
> SQLCm.Dispose()
> Cn.Dispose()
> End Sub
>
> >
> Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
> Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\starsystem.STARSYST-DE959A\デスクトップ\SQL問題\Sql_SS1.mdb")
> Dim SQLCm As OleDbCommand = Cn.CreateCommand
>
> SQLCm.CommandText = "UPDATE usr SET city = '岐阜県岐阜市' WHERE user_id ='A200402'"
>
> Cn.Open()
> SQLCm.ExecuteNonQuery()
> Cn.Close()
> MsgBox("変更しました。")>
End Sub
End Class

申し訳ありません。
コード修正させていただきます。



引用返信 編集キー/
■24302 / inTopicNo.3)  Re[1]: レコードの更新
□投稿者/ ネタ好き未記入 (62回)-(2008/09/01(Mon) 14:18:09)
>これはあくまでもボタンが押されたときにA200402さんの住所を更新なんですが、これをテキストボックスに更新したい値を書いてボタンを押したときに更新できるプログラムをくみたいのです。

まず、データベースでは一意性が大事になります。
ですからA200402さんの識別子を取得して、それをキーにして更新するという考え方になります。
ボタンが押された時ですから、イベント駆動で考えて「ボタンが押された」イベントをフックして、
上記の処理を行うといいと思います。
ただし、「常に正しいデータが入力されるとは限らない」ので、制約の事も調べる必要があります。
引用返信 編集キー/
■24303 / inTopicNo.4)  Re[2]: レコードの更新
□投稿者/ もょもと (39回)-(2008/09/01(Mon) 14:18:44)
2008/09/01(Mon) 14:22:27 編集(投稿者)

> ここから聞きたいことなんですがこれはあくまでもボタンが押されたときにA200402さんの住所を更新なんですが、これをテキストボックスに更新したい値を書いてボタンを押したときに更新できるプログラムをくみたいのです。

テキストボックスの値が更新前の値から変更されていれば更新処理を行い、
変更されていなければ更新処理を行わないってことですか?

更新処理に入る前にテキストボックスの値の比較を行えばいいのではないでしょうか。

って、被りましたね…すみません。
引用返信 編集キー/
■24304 / inTopicNo.5)  Re[3]: レコードの更新
□投稿者/ データベース (11回)-(2008/09/01(Mon) 14:24:58)
No24303 (もょもと さん) に返信
> 2008/09/01(Mon) 14:21:21 編集(投稿者)
>
>>
>
> テキストボックスの値が更新前の値から変更されていれば更新処理を行い、
> 変更されていなければ更新処理を行わないってことですか?
>
>
まだそこまで考えてませんのでとにかくテキストボックスに入力された値が更新されればOKです。
少しお二人の意見をやってみます。
解らなければ、また指導おねがいします。
できたら、報告いたします。
引用返信 編集キー/
■24308 / inTopicNo.6)  Re[4]: レコードの更新
□投稿者/ ロック (75回)-(2008/09/01(Mon) 14:39:53)
単純にSQL文をTextBoxの値で動的に変更したいという事では?
っで、なんか良いサイトが無いか再度探してみたのですが
みんな似たような感じなので、結局ココに誘導
http://www.atmarkit.co.jp/fdotnet/basics/adonet_index/index.html

http://www.atmarkit.co.jp/fdotnet/basics/adonet03/adonet03_03.html

コードが古いのでVS2005だとワーニングが出た気がします。
「ADO.NET Parameters.Add」で検索するといっぱい出てくるので
色々やってみて下さい。


あと↓この辺の情報も今後役に立ってきますので要チェックです
http://msdn.microsoft.com/ja-jp/library/kb9s9ks0.aspx

引用返信 編集キー/
■24313 / inTopicNo.7)  Re[5]: レコードの更新
□投稿者/ データベース (12回)-(2008/09/01(Mon) 14:50:34)
No24308 (ロック さん) に返信
> 単純にSQL文をTextBoxの値で動的に変更したいという事では?
僕もそれを考えて&でつなげてみました。
見事できました。
次にもょもとさんとネタ好き未記入さんがおっしゃっていることをしたいのですが
いちぶですが
If TextBox1.Text = TextBox1.Text Then

MsgBox("だめ")
End If
SQLCm.CommandText = "UPDATE usr SET city = '" & TextBox1.Text & "' WHERE user_id ='A200402'"
といった感じでやってみました。
それでTextBox1.Text が同じ値ならばどうするか迷い中です。
Exitで終わらせようかそれともボタンを押せなくしようか・・・・・・。
引用返信 編集キー/
■24316 / inTopicNo.8)  Re[6]: レコードの更新
□投稿者/ データベース (13回)-(2008/09/01(Mon) 14:54:17)
No24313 (データベース さん) に返信
> ■No24308 (ロック さん) に返信
>http://www.atmarkit.co.jp/fdotnet/basics/adonet_index/index.html
こちらのサイトありがとうございます。
使わせていただきます。
引用返信 編集キー/
■24321 / inTopicNo.9)  Re[7]: レコードの更新
□投稿者/ データベース (14回)-(2008/09/01(Mon) 15:29:54)
If TextBox1.Text = TextBox1.Text Then
はおかしいですね。
クラス変数もうけてみたらできました。
皆様ご指導ありがとうございました。
解決済みとさせていただきます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -