- ベストアンサー
VBAをVBで焼き直しする方法とは?
- access2003のVBAプログラムをVB2010に焼き直す方法について教えてください。
- 具体的には、(1)クエリー名のつけ方、(2)クエリーの実行方法、(3)テーブルへの更新方法が分からないです。
- もし知っている方がいらっしゃれば、教えていただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
AccessやExcelのVBAと、VB2010はいろいろ違って大変ですね… 私も移植でいろいろ苦労しています。 さて、クエリを作成して発行する以外の方法は、絶対ダメですか? クエリは、結局はSQLですから、データを選択してくるSELECTのSQLの結果を元に、UPDATEのSQLを制作して、接続しているデータベースに発行してはどうでしょうか? -------------------- Dim sql_01 As String Dim sql_02 As String Dim com As OleDb.OleDbCommand Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\xxxxxs.mdb") Cn.Open() sql_01 = "SELECT * FROM xren;" Dim command As System.Data.OleDb.OleDbCommand = Cn.CreateCommand command.CommandText = sql_01 Dim reader As System.Data.OleDb.OleDbDataReader = command.ExecuteReader() If reader.HasRows = True Then While reader.Read() sql_02 = "UPDATE [tb0] SET [avkei04] = " sql_02 = sql_02 & reader(1) sql_02 = sql_02 & " WHERE [ren_no] =" sql_02 = sql_02 & reader(0) sql_02 = ";" com = New OleDb.OleDbCommand(sql_02, Cn) com.ExecuteNonQuery() com.Dispose() End While Else ' レコードが取得できなかった時の処理 MessageBox.Show("レコードがありません") End If -------------------- SELECT * FROM xren; でいくつフィールドが返ってくるのか判らないので、とりあえず、IDともう一つしか返ってこない前提です。 reader(0) reader(1) は、SQLのフィールド番号になります。 ハズしているかもしれませんが、いかがでしょうか?