- ベストアンサー
AccessVBAでInputBoxの値をSQLに組み込むには
AccessVBA超初心者です。 テーブル上の項目の受付日時をInputBoxよりGetして、 フラグが1であるものに一律その値をセットしたいと思っているのですが、なかなか上手くいきません。 おそらくSQLの中に直接パラメタを入れられないのだと思いますが、どうしていいかわかりません。 すみませんが、よろしくお願いいたします。 ----------------------------------------------- Public Sub cmd_1_Click() Dim cmdReset As New ADODB.Command Dim cmdResult As New ADODB.Command Dim strDate As String cmdReset.ActiveConnection = CurrentProject.Connection cmdResult.ActiveConnection = CurrentProject.Connection cmdReset.CommandText = "UPDATE テーブル SET 受付日時='';" cmdReset.Execute strDate = InputBox(prompt:="処理日付を入力して下さい。(yyyy/mm/dd)", Title:="処理日の入力") cmdResult.CommandText = "UPDATE テーブル SET 受付日時 = strDate WHERE フラグ='1' " cmdResult.Execute MsgBox "終了" End Sub ------------------------------------------
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- CMD.Executeの結果をメッセージボックスで表示したい
Public Sub SQLActionCmd() Dim CN As ADODB.Connection Dim CMD As ADODB.Command Dim MYSQL As String '接続 Set CN = CurrentProject.Connection '更新 MYSQL = "SELECT * FROM 名簿 WEHRE 性別 = "男" ;" Set CMD = New ADODB.Command CMD.ActiveConnection = CN CMD.CommandText = MYSQL CMD.Execute '終了 Set CMD = Nothing RS.Close: Set RS = Nothing CN.Close: Set CN = Nothing End Sub と言う感じで実際にはAccessのフォームのボタンをクリックしたタイミングでコードをかいているのですが、このCMD.EXECUTEを実行した結果、テーブルに該当データがなければない旨のメッセージボックスを出したいのです。 そういうことは可能でしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- SQL文の最後に「;」はいらないのでしょうか?
VBAのADOについて質問です。 SQL文の最後には「;」を付けなくちゃいけないものだと思っているのですが ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Private Sub test_Click() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Set CN = CurrentProject.Connection Set RS = New ADODB.Recordset SQL = "SELECT * FROM Tテーブル" ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ でも問題なくコードが動きました。 SQL文の最後に「;」はいらないのでしょうか? ちなみに SQL = "SELECT * FROM Tテーブル;" でもエラーになりませんでした。
- 締切済み
- Visual Basic
- レコードの削除
VB6.0 ACCESSで開発しています。 t_nyukoテーブルのデータを全て削除するのは下記のように 出来たのですが dataGridに表示されているものを1つ選択し 選択されたものだけ削除したいのですがどうすればいいのでしょうか? よろしくお願いします。 Private Sub Command1_Click() Dim cn As New ADODB.Connection Dim cmd As ADODB.Command Dim cat As New ADODB.Command Dim strSQL As String Set cn = New ADODB.Connection cn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\temp\db2.mdb" cn.Open cat.ActiveConnection = cn strSQL = "DELETE FROM t_nyuko " Set cmd = New ADODB.Command cmd.ActiveConnection = cn cmd.CommandText = strSQL cmd.Execute cn.Close Set cmd = Nothing Set cn = Nothing Set cat = Nothing End Sub
- ベストアンサー
- Visual Basic
- ACCESSでレコード数の取得の仕方
Aテーブルのレコード数を取得しようと思い、次のPGを考えました。(Aテーブルには10件のデータが入っています。)ですが、「-1」という数値が返ってきます。なぜでしょうか? Dim objADOCON As ADODB.Connection Dim objADORS As ADODB.Recordset Dim strSQL As String Set objADOCON = Application.CurrentProject.Connection strSQL = "SELECT * FROM Aテーブル" Set objADORS = objADOCON.Execute(strSQL) MsgBox objADORS.RecordCount , vbOKOnly, "レコード数"
- ベストアンサー
- その他(データベース)
- 二つのMDBファイルの間のデータのやり取り
おせわになります。みなさんの知恵を貸してください。 いかがシステム構成です。 A.mdb(テーブル:Work1) B.mdb(テーブル:Work2) A.mdbはカレントデータベースです。B.mdbはDSN=KANRIで アクセスしたいです。 現在Work1のデータをWork2に追加したいのですが、どのような方法が考えられますか? ちなみに以下のコードを書いてみました。 -------------------------------------------------- Dim cn1 As New ADODB.Connection, cn2 As New ADODB.Connection Dim rs1 As New ADODB.Recordset, rs2 As New ADODB.Connection Dim com As New ADODB.Command, mysql As String Set cn1 = CurrentProject.Connection cn2.ConnectionString = "provider=MSDASQL;DSN=KANRI" mysql = "insert into Work2 select * from Work1" com.activeconnection = cn2 com.commandtext = mysql com.Execute Set com = Nothing rs1.Close: Set rs1 = Nothing rs2.Close: Set rs2 = Nothing cn1.Close: Set cn1 = Nothing cn2.Close: Set ch2 = Nothing -------------------------------------------------- Work1は見当たらないとエラーが出ました。 どなたか教えてください。 rs1.EoF Loop をまわしながら一行ずつ追加するしかないでしょうか?
- ベストアンサー
- その他(データベース)
- ACCESSのエラーで困っています
ACCESSのVBAで以下のコードを実行するとエラーがでて困っています。 エラーは「行セットは逆方向フェッチをサポートしていません」とでます。 どこに問題があるのかをヘルプで調べても全く分かりませんでしたので、 問題点、アドバイスがあれば教えてください。 環境はACCESS2000、WIN98です。 宜しくお願いしますm(_ _)m Dim recR As New ADODB.Recordset Dim cmdR As New ADODB.Command cmdR.ActiveConnection = CurrentProject.Connection cmdR.CommandText = "~" Set recR = cmdR.Execute Do Until recR.EOF If ~ Then recR.MoveLast ←ここでエラーがでます End If recResult.MoveNext Loop
- ベストアンサー
- オフィス系ソフト
- ACCESSのSQL文
ACCESSのSQL文 いつもお世話になります。 SQL文でテーブルのデータを抽出したいのですが上手くいきません。 Dim rs4 As ADODB.Recordset Dim cmdrs4 As New ADODB.Command Set cmdrs4.ActiveConnection = CurrentProject.Connection a = "SELECT 管理NO" & " FROM マスタ" If strFlter = "" Then a = a & ";" Else a = a & " WHERE " & strFlter & ";" End If cmdrs4.CommandText = a Set rs4 = cmdrs4.Execute() MsgBox rs4.GetString aの内容は a = "SELECT 管理NO FROM マスタ WHERE 管理NO Like ""*2*"";" 実行すると、rs4.GetString文で下記エラーが出ます。 「BOFとEOFのいづれかがTrueになっているか、または現在のレコードが削除されています。 要求された操作には、現在のレコードが必要です。」 aを "SELECT 管理NO FROM マスタ WHERE 管理NO = ""2-6"";" なら問題ありません。 Likeの使い方が悪いのでしょうか? よろしくお願いします。
- ベストアンサー
- その他(データベース)
- Accessのデータ操作について(AccessVBA)
AccessVBA初心者です。 Accessのデータを操作する方法について質問です。 例えば形式、フィールドが同じ複数のテーブルを一つのテーブルにまとめるようなとき、 Insert into~構文を使っていく方法でするとします。 (1) Dim connAccess As ADODB.Connection Set connAccess = Application.CurrentProject.Connection のような接続方法でSQL文を実行する (2) CurrentDb.Execute SQL文 上記の2つのパターン、どちらでも出来ますよね? (1)の方は全然理解できません。 あの2行だけでは接続すらで来ていないかもしれません… (2)の方が単純で接続なんかも意識せずに出来ますよね。 この2つの方法はどう違うのでしょうか。 こうゆうデータベースの操作について書かれているサイトがあれば、 そちらも教えてほしいです。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- AccessVBAでCSVファイルへ接続する方法
AccessVBAでCSVファイルへ接続したいのですが 64ビットパソコンの場合は「Provider」は何を設定すればいいのか分からず 困っています。 私の持っているテキストでは32ビットパソコンの場合は 次のコードで接続できます。 このコードのProviderだけ64ビットのものに変更すればいいと思うのですが、いかがでしょうか。 -------------------------------------------------------------------------- Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Dim MyPath As String MyPath = CurrentProject.Path & "\" Set CN = New ADODB.Connection CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ ”Data Source=" & MyPath & ";" & _ "Extended Properties='Text;HDR=NO'" Set RS = CN.Execute("SELECT * FROM test.csv") ------------------------------------------------------------------------------ 教えてください。 宜しくお願い致します。
- 受付中
- Access(アクセス)
- レコードは2行あるのに「-1」が返ってくる
accessです。 テーブル1にレコードは2行あるのに、下記のコードを実行すると「-1」が返ってきます。 なぜでしょうか? ------------------------------------------------------------ Sub test() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = Application.CurrentProject.Connection Set rs = cn.Execute("SELECT * FROM テーブル1") MsgBox rs.RecordCount rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub ------------------------------------------------------------ ご教示よろしくお願い致します。
- ベストアンサー
- その他MS Office製品
お礼
ありがとうございます。よくわかりました! 今後ともよろしくお願いいたします。