Access97でSQLを使用して変数に入った値を追加する方法

このQ&Aのポイント
  • Access97を使用してSQLを実行する際に、変数に入った値を追加する方法について説明します。
  • SNのデータが入るためには、'SN'のように引用符で囲む必要があります。また、SNの値を取得するためには、C_Flagの値をチェックしてSNに0または1を代入する必要があります。
  • SNの値を取得する際には、条件分岐を使用してC_Flagの値に応じてSNに0または1を代入します。その後、SQL文を実行する際には、'SN'のように引用符で囲んで値を追加します。
回答を見る
  • ベストアンサー

変数に入った値を追加したい

Access97を使用しています。SQLで変数に入った値を追加したいのです。 Dim strSQL, NO3, NO2 As String Dim i As Integer Dim db As DATABASE Dim SN As Variant If (C_Flag = 0) Then SN = 0 Else SN = 1 End If strSQL = "INSERT INTO 連続印刷 (Nフラグ" strSQL = strSQL & ") VALUES (" strSQL = strSQL & "', 'SN'" strSQL = strSQL & ")" Set db = CurrentDb() db.Execute strSQL Set db = Nothing End Sub 上記のようにすると、"SN"のデータが入ります。 'SN'をSNのようにすると、パラメータが少なすぎますと出てきます。 どうすれば、上記 0や1の値を取得することができるのでしょうか?

  • cdma
  • お礼率36% (91/247)

質問者が選んだベストアンサー

  • ベストアンサー
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

strSQL = strSQL & ") VALUES (" strSQL = strSQL & "', 'SN'" strSQL = strSQL & ")" を strSQL = strSQL & ") VALUES ('" strSQL = strSQL & SN strSQL = strSQL & "')" としてみたら いかがでしょうか?

cdma
質問者

お礼

ありがとうございました。上手くいました。

関連するQ&A

  • Yes/Noフラグの値をコピーできない

    すいません。ACCESS2003 VBAで下記の問題で困っています。 新たに作成したmdbファイル(テーブルの中身は空)に既存のmdbファイルのテーブル内容をコピーしたいのですが、Yes/Noフラグ型だけ移行できません。一応サンプルのソースです↓ Dim db As DAO.Database Dim RS As DAO.Recordset Dim strsql As String コピー元のmdbファイルをオープン Set db = OpenDatabase("コピー元mdb") 'SQLの生成 strsql = "" strsql = strsql & " SELECT * FROM テーブル名" 'レコードセット生成 Set RS = db.OpenRecordset(strsql, dbOpenSnapshot, dbReadOnly) 'コピー元テーブルにデータがあるか判定 If RS.RecordCount = 0 Then msgbox "データがありません" Else RS.MoveFirst 'コピー先のデータベースを設定 Set db = OpenDatabase("コピー先mdb") 'レコードの初期化 db.Execute (DELETE FROM コピー先テーブル名) Do While RS.EOF = False strsql = "" strsql = strsql & " INSERT INTO コピー先テーブル名(" strsql = strsql & " ,コピー先のYes/Noフラグ値" ' strsql = strsql & ")VALUES(" strsql = strsql & " ,'"コピー元のYes/Noフラグ値 "' " strsql = strsql & ")" db.Execute (strsql) RS.MoveNext Loop End If RS.Close db.Close

  • SQLで 全項目を追加したい

    ACCESS97を使用しています。 SQLを使用して、データの全件削除、全件追加を実施したいのです。 追加元(テーブルA)の項目と、追加先(テーブルB)の項目は同じです。 削除の方は下記の内容で上手くいきましたが 追加は実施できませんでした。 追加の時、*アスタリスクを使用する方法などないのでしょうか? Private Sub コマンド0_Click() Dim SQLstr As String Dim DB As Database Dim RS As Recordset Set DB = CurrentDb() SQLstr = "DELETE FROM テーブルB" DB.Execute SQLstr Set DB = Nothing SQLstr = "" SQLstr = "INSERT INTO テーブルB(*) VALUE (テーブルA*)" Set DB = CurrentDb() DB.Execute SQLstr Set DB = Nothing End Sub

  • ループで呼び出しながら、追加クエリでテーブルに追加

    IDをループで呼び出しながら、追加クエリでテーブルに追加したいのですが、 値が入りません。 エラーなく動くのですが、テーブルに値が入っていないのです。 何がたりないのでしょうか? ――――――――――――― Public Sub CYUSYUTU_SEIKYUID2() Dim CYUSYUTU_SEIKYUID As String Dim recCount As Long recCount = DCount("*", "作業用請求先ID") Dim ID As String Dim DB As DAO.Database Dim RS As DAO.Recordset Dim i As Integer Dim strSQL As String Set DB = CurrentDb Set RS = DB.OpenRecordset("作業用請求先ID") RS.MoveFirst Do Until RS.EOF RS.Edit For i = 1 To recCount CYUSYUTU_SEIKYUID = RS.Fields("請求先ID(13)").Value DoCmd.RunSQL _ "INSERT INTO [作業用_▲入金DB] SELECT * FROM ▲入金 WHERE ▲入金.請求先ID='& CYUSYUTU_SEIKYUID &';" Next i RS.Update RS.MoveNext Loop RS.Close: Set RS = Nothing DB.Close: Set DB = Nothing End Sub

  • 【Access2003】クエリで動作するSQLがVBAで動作せず困っています。

    下記のソースを実行したところ、「パラメータが少なすぎます。2を指定してください。」というエラーが表示されました。 エラーが発生する箇所は「db.Execute strsql」です。 しかし、このstrsqlに書かれているSQL文をクエリで実行した所、問題なく動作しました。 なんとなく、クエリでは書けるものの、VBAでは書きない所があるのかなと思ったのですが、どのように修正すればよいか分かりませんでした。 その為、上記の現象について、ご教示いただける方がいらっしゃいましたら、よろしくお願いします。 【VBA】 Private Sub btn_Click() Dim db As DAO.Database Dim ws As DAO.Workspace Dim str As String Set ws = DBEngine.Workspaces(0) Set db = CurrentDb ' トランザクション開始 ws.BeginTrans strsql = "INSERT INTO T_W ( W_DAY )" strsql = strsql & "SELECT T_M.M_DAY" strsql = strsql & " FROM T_M" strsql = strsql & " WHERE (((Left([T_M].[M_DAY],4) & Mid([T_M].[M_DAY],6,2) & Right([T_M].[M_DAY],2))" strsql = strsql & " Between IIf(Nz([Forms]![F_1]![text_str])='',0,[Forms]![F_1]![text_end])" strsql = strsql & " And IIf(Nz([Forms]![F_1]![text_str])='',99999999,[Forms]![F_1]![text_end])))" strsql = strsql & " ORDER BY T_M.M_DAY" db.Execute strsql ws.CommitTrans End Sub 【フォーム:F_1】 テキストボックス:text_str テキストボックス:text_end コマンドボタン:btn 【データベース:T_M】 フィールド名:M_DAY    値  :2001/01/01    値  :2001/01/02    値  :2001/01/03 (以下略) 【データベース:T_W】 フィールド名:W_DAY    値  :なし よろしくお願いします。

  • DBから取得したオブジェクトの受け渡し方法

    はじめましてVB初心者でわけが分からなくなっています。DBをクローズした後に取得したレコードセットを他の関数に渡すにはどうしたらよいでしょうか?おそらく、そんなのcloseせずにやればいいと思うかもしれませんが、可能かどうかがわかりません。どうか教えてくださいよろしくお願い致します。 下記のコードにて行ってます。Set rs = cn.Execute(strSQL)で取得しています。rsをDBを閉じた後も他の関数に渡せるようにしたい訳です。m(..)m Dim cn As Object Dim rs As Object Private Sub getData() Dim strSQL As String Set cn = CreateObject("ADODB.Connection") cn.Open "省略" strSQL = "SELECT * FROM swan" Set rs = cn.Execute(strSQL) Set rs = nothing Set cn.close Set cn = nothing End Sub

  • ACCESS 処理の件数を取得したい

    どうやっていいのか困っています。 DAOで処理をしています。 下記のような処理があり、それぞれの更新、検索、追加の件数を とりたいのですがどなたか教えていただけないでしょうか? もしくはサンプル、どこかいいサイトはありませんか? よろしくおねがいします。 UPDATEの場合 CurrentDb.Execute "UPDATE T_A SET WHERE Flag = '0'", dbFailOnError SELECTの場合 strSQL = "SELECT * FROM T_N " CurrentDb.Execute strSQL, dbFailOnError INSERTの場合 strSQL = "INSERT INTO FROM T_Y " CurrentDb.Execute strSQL, dbFailOnError

  • ACCESS97のMAX関数について

    ACCESS97を使用しています。 "関数"の使い方が全くわかりません。 (というより、SQLも含めて…)  テーブル"TBL_A"の"項目B" から最大値を変数SDHSに取得したいのですが どうすればいいのでしょうか?  Dim db As DATABASE Dim RS As Recordset Dim SDHS, strSQL As String Set db = CurrentDb() strSQL = "SELECT Max(項目B) FROM TBL_A ;" Set RS = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly) SDHS = Max(項目B)

  • Access2007 データ型エラーについて

    お世話になっております。 下記のVBAでコードを数値型からテキスト型に変更したところ、「抽出条件でデータ型が一致しません。」というエラーが出ました。 デバッグをクリックすると、dbs.Execute strSQLの部分が黄色に反転しています。 VBAはあまり詳しくありませんので、エラーが出なくなる方法を教えていただければ助かります。 よろしくお願いいたします。 Private Sub 在庫差引_Click() Dim dbs As Database Dim rst As Recordset Dim strSQL As String Set dbs = CurrentDb Set rst = Me!サブフォーム.Form.RecordsetClone With rst .MoveFirst Do Until .EOF strSQL = "UPDATE マスター " & _ "SET 在庫数 = NZ(在庫数) - " & Nz(!数量, 0) & " " & _ "WHERE コード = " & !コード dbs.Execute strSQL .MoveNext Loop .Close End With End Sub

  • アクセス2002 新番号割当とテーブルのデータ追加

    教えてください。 フォーム内にあるボタンに以下のイベントプロシージャーが入っています。 このボタンで行いたいことは、 1.フォーム内に「入力したデータ」に新しい「番号」(PS-0000001から始まり、1ずつ増える)をつけ、 2.abcdeのテーブルに、「入力したデータ」と「番号」を書き込む ========イベント======= Dim DB As Database Dim ts As DAO.Recordset Set DB = CurrentDb() Set ts = DB.OpenRecordset("T_abcde", dbOpenDynaset) If ts.EOF Then txtFileNo = "PS-0000001" Else ts.MoveLast txtFileNo = "PS-" & Format(ts!No + 1, "0000000") End If ts.Close DB.Close ===イベントここまで=== フォームにデータを入れて2回まではうまくできるのですが、3回目以降は番号は更新されずabcdeへのデータもどんどん上書きされてしまいます。 意味通じましたでしょうか? よろしくお願いいたします。

  • ACCESS クエリーから件数取得

    下記のような記述でクエリーより件数を取得したいのですがうまくいきません。 rstBufの指定が悪いのだとは思い、調べてはいるのですがうまくいかない状態です。 どなたかご助言をお願い致します。 Dim rstBuf As DAO.Recordset Dim qryBuf As DAO.QueryDef strSQL=select xx from xx Set qryBuf = CurrentDb.CreateQueryDef(Q_RPT, strSQL) Set rstBuf = qryBuf.OpenRecordset(strSQL,dbOpenDynaset) If rstBuf.EOF = False Then rstBuf.MoveLast count = rstBuf.RecordCount End If rstBuf.Close Set rstBuf = Nothing

専門家に質問してみよう