• ベストアンサー

access テーブルデータの編集、保存

失礼します。 ACCESSのテーブルのデータをVBAで編集する仕方がわからなくて困っています。 やりたいことは、フォームを作成してそこに「検索」ボタンを作り テキストボックスに入力した条件をSQLにして検索をかける。 →HITするデータの一覧が表示される。 →修正したいデータを選択する。 →修正画面が表示される。 この時に選択したデータをあらかじめEXCELで作成したフォーマットに 反映して修正できるようにしたいんですが、(フィールドをばらばらに指定したセルに代入するような感じです。)これは可能なんでしょうか? そもそもレコードセットに格納したデータを視覚的にUSERに認識させてそこからデータを選択するという事が可能なのかもわかりません。 勉強不足で申し訳ありませんがどなたかアドバイスをいただければ幸いです。 一応自分なりに書いてみたんですがいくら調べてもここで止まってしまいます。どこが不備があれば教えてください。 お願いします。 '変数の設定 Dim myDB As DAO.Database Dim myRS As Recordset Dim strSQL As String '検索条件変数の設定 Dim Day As String Dim Sec As String Dim shaNO As String Dim User As String Dim Sis As String Day = テキスト3 Sec = テキスト7 shaNO = テキスト9 User = テキスト5 Sis = テキスト1 '検索条件をSQLに代入 strSQL = strSQL & " SELECT" strSQL = strSQL & ",SM.起票日" strSQL = strSQL & ",SM.社員番号" strSQL = strSQL & ",SM.所属部署" strSQL = strSQL & ",SM.氏名" strSQL = strSQL & ",SM.対象システム" strSQL = strSQL & ",SM.内容" strSQL = strSQL & ",SM.一日当たりの工数" strSQL = strSQL & ",SM.期待効果" strSQL = strSQL & ",SM.改修コスト" strSQL = strSQL & ",SM.改修必要時間" strSQL = strSQL & ",SM.調査開始日" strSQL = strSQL & ",SM.受付担当者" strSQL = strSQL & ",SM.受付日時" strSQL = strSQL & ",SM.調査終了日" strSQL = strSQL & ",SM.障害区分" strSQL = strSQL & ",SM.調査担当者" strSQL = strSQL & ",SM.代替案" strSQL = strSQL & ",SM.対応区分" strSQL = strSQL & ",SM.対応完了日" strSQL = strSQL & ",SM.難易度" strSQL = strSQL & " FROM" strSQL = strSQL & ",T_障害票マスタ SM" strSQL = strSQL & " WHERE" strSQL = strSQL & ",SM.起票日 = &Day& " strSQL = strSQL & ",SM.所属部署 = &Sec& " strSQL = strSQL & ",SM.社員番号 =&shaNO& " strSQL = strSQL & ",SM.氏名 = &User& " strSQL = strSQL & ",SM.対象システム = &Sis& " strSQL = strSQL & "" Set myDB = CurrentDb() Set myRS = myDB.OpenRecordset(strSQL, dbOpenTable)

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

No.2です。 > 【コントロールツール】の式には変数も使用できるんでしょうか? > 条件入力したものをそのままSQLに渡したいんですが。 『コントロールソース』のことでしたら、残念ながらそこには変数は指定できません。 ただ、ご希望の内容が「フォームのコントロール(テキストボックス等)に対して、ユーザーが 入力した値をSQL文の中に組み込みたい」ということでしたら、別の方法で対応可能です。 この場合、入力値はテーブルに保存する必要がないと思いますので、『コントロールソース』 は空白のままにしておきます(→非連結コントロール)。 その上で、以下のような式を使用して、コントロールの値を参照します。 ・参照したいコントロールと、コード記述先が、同じフォームだった場合:   Me!コントロール名.Value   (なお、「Me!」や「.Value」は省略も可能 : 「コントロール名」でOk) ・参照したいコントロールが、コード記述先のサブフォームだった場合:   Me!サブフォーム名!コントロール名.Value   (「Me!」「.Value」は、上と同様に省略が可能) ・参照したいコントロールが、コード記述先以外(別フォームや標準モジュール)の場合:   Forms!フォーム名!コントロール名.Value   (「.Value」については、上と同様に省略が可能) 以下、コードの一例です: (フォーム上に「ボタン1」コマンドボタンと「テキスト1」テキストボックスが  あり、「ボタン1」をクリックすると、「テキスト1」に指定した条件に合う  レコード(→「Tbl1」テーブルに保存済み)をフォームに表示、の想定) Private Sub ボタン1_Click()   '変数の宣言   Dim strCnd As String, strWhr As String, strSQL As String   '定数の宣言   Const conSQL As String = "Select * From Tbl1"   '「テキスト1」テキストボックスの値を確認   '(Accessのコントロールの初期値はNullという特殊な値のため、   ' Nz関数を使用して、テキストとして扱える空文字に変換)   strCnd = Nz(Me!テキスト1, "")  '←◆コントロールの値を参照◆   '「テキスト1」の入力値を元に、Where条件句を作成   If strCnd = "" Then  '条件指定なしの場合は全件表示     strWhr = ";"   Else            '条件指定時は曖昧検索     strWhr = "Where Fld1 Like '*" & strCnd & "*';"   End If   'SQL文を作成   strSQL = conSQL & vbCrLf & strWhr   '自身のレコードソースに設定   Me.RecordSource = strSQL End Sub ・・・以上です。 Nullについての参考: http://oshiete1.goo.ne.jp/qa4850675.html

anman0201
質問者

お礼

遅くなりましてすみません。 教えていただいたとおりに書いたらすんなり出来ました。 本当にありがとうございます。 またなにかありましたらよろしくお願いします。

その他の回答 (2)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

> レコードセットに格納したデータを視覚的にUSERに認識させてそこから > データを選択するという事が可能なのか もしかしたらなのですが、Excelか、VBAではないVB等に慣れた方なのでしょうか。 Excelのユーザーフォームなどとは違って、Accessの『フォーム』には『レコードソース (RecordSource)』というプロパティがあり、ここにテーブルやクエリ、SQL文を指定する ことで、レコードセットを簡単に表示できるようになっていますし、追加/編集/削除も 可能です。 (フォームのデザインビューで、プロパティシートを使用して設定もできますし(→GUI)、  「Forms!フォーム名.RecordSource = "テーブル名"」といった構文による設定も  できます(→VBA)) 通常は、そうして作った「連結フォーム」(=レコードソースに連結したフォーム、の意)を 使用して、入力/編集を行うのが、コーディングが少なくてすむので初心者向きです。 (フォームのプロパティには『既定のビュー(DefaultView)』というものもあり、これによって  Excelのユーザーフォームのような「単票フォーム」や、複数のレコードを同時に表示  しつつ、コントロールも自由に配置できる「帳票フォーム」、テーブルと同様の「データ  シート」(→但し、あくまでフォームなので、テーブルと違い更新時にVBAなどで自動  で処理を行わせる、といったことも可能)といったように、外観も設定できます) ※なお、データ表示のためには、テキストボックス等のコントロールの追加も必要です。  また、コントロールについては、「どのフィールドのデータを表示するか」を指定するため  の『コントロールソース(ControlSource)』プロパティというものがありますので、フォーム  でのレコードソースと同様、ここにフィールド名(または関数などの式も可)を指定する  必要があります。 ・・・ということで、レコード編集や集計などは、通常はデータベース上で行って、その 後の二次加工をする際に初めてExcelに出力して、というのが一般的な方法かと 思います。 Excelへの出力も、テーブルやクエリの単純なエクスポートでは、Excel上のA1セルから 上詰め・左詰めにしかなりませんが、逆に、Access上に「出力用テーブル」のようなもの を作り、クエリを使用して、一旦ここに必要なデータを全てコピーし(→Excel上のヘッダや、 余白となるセルも含めて再現:但し、並び順を規定するフィールドを作成する必要あり)、 これをご希望のExcelフォーマットに出力してやる、という方法もあります。 AccessのテーブルデータをExcelに書き出してユーザーが編集し、それを再びAccessの テーブルに反映させる、というのは、かなり面倒ですので、よければご検討下さい。

anman0201
質問者

お礼

いつも詳しい説明ありがとうございます。 とても参考になりました。 ACCESSの基本的な機能も勉強せずに、複雑なシステムを作ろうとしていました。 あとひとつお伺いしたいんですが、【コントロールツール】の式には変数も使用できるんでしょうか? 条件入力したものをそのままSQLに渡したいんですが。 よろしくお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

初心者らしいが、VBAで相当複雑なことをやろうとしているようだが、これでは、判らないからと、課題の丸投げでは無いか。要は長い時間をかけて勉強が必要なのに、課題が欲張りすぎるのだと思う。 コードを書いてくださいといったことになる。 もっと現実の複雑な問題から一遍に取り掛かるのでなく、易しい例で 、一部から取り掛かることがやり方では。 アクセスでエクセルを出力結果の表示用に使うのは難しいのでは。 Spredsheetのようなコントロールが無いと難しいが普通では無い。 ーー 参考に フォ-ム10に テキスト1 テキスト3 リスト5 コマンドボタン を設ける。 ーーー テキスト1, テキスト3 に条件文字列を入れてクリック。 コマンドボタンのクリックイベント Private Sub コマンド0_Click() MsgBox テキスト1 MsgBox テキスト3 Dim strSQL As String strSQL = "SELECT 氏名,学校,県,生年月日,性別 from 生徒1" 'strSQL = strSQL & "where 氏名 = '" & テキスト1 strSQL = strSQL & " where 学校 ='" & テキスト3 strSQL = strSQL & "';" MsgBox strSQL Set mydb = CurrentDb() Set rs = mydb.OpenRecordset(strSQL, dbOpenDynaset) Me.リスト5.RowSource = strSQL Me.リスト5.ColumnCount = 4 Do Until rs.EOF MsgBox rs!性別 & " , " & rs!氏名 & " , " & _ rs!学校 & " ," & rs!生年月日 rs.MoveNext Loop rs.Close: Set rs = Nothing mydb.Close: Set qry = Nothing End Sub ーーー リストボックスのクリックイベント(選択時) Private Sub リスト5_Click() With Me.リスト5 'MsgBox .ListCount For Cnt = 0 To リスト5.ListCount - 1 'MsgBox リスト5.Selected(Cnt) If リスト5.Selected(Cnt) = True Then For j = 0 To 4 MsgBox リスト5.Column(j) Next j End If Next Cnt End With End Sub ーーー テーブル例 ID 生徒番号 氏名 県 学校 学年 身長 生年月日 生年文字 年号暦 性別 11 北村 北小学校 女 2 1 山田 埼玉 北小学校 2 154 1964/11/01 1954 H14 女 3 2 木下 埼玉 北小学校 1 145 1990/12/03 1991 H10 女 4 3 北野 千葉 中央小学校 3 160 1994/05/24 1994 H18 男 6 4 竹田 東京 南小学校 4 140 1998/02/23 1998 男 7 5 山 下 東京 南小学校 3 129 1991/01/23 1988 男 10 6 近藤 山梨 本町小学校 6 139 男 これでも参考にして拡充してみては。

anman0201
質問者

お礼

いつもご回答いただきありがとうございます。 記述していただいたものを参考にがんばってみます。 これからもよろしくお願いします。

関連するQ&A

  • accessのデータ変換について

    access2000を使用しており悩んでおります。 年月日_text(テキスト型)  20020303 20020404 のデータを日付型にしたいのですが 下記のソースではデータ型が合わないと エラーになります。なぜでしょうか? ソース(抜粋) Dim myRs As New ADODB.Recordset tb.Columns.Append "年月日_Date", adDate myRs![年月日_date] = CDate(myRs![年月日_text]) 

  • エクセルからアクセスへ

    お世話になります。 エクセルからVBAでアクセスのテーブルに レコードを追加させたいのですが、 下記の記述でいきなり mydb as database の所が 青く塗られ 「コンパイルエラー:ユーザー定義型は定義されていません」 とエラーになってしまします。 また、databaseのdが小文字なのも気になります。 参照設定での項目チェックが必要なんだと思うのですが どこにチェックしたら良いのか、またそれだけではダメなのか 分かりません。 どなたかご教授下さい。     記 Dim mydb As database Dim myrs As Recordset Dim myrnge As Range Dim myrow As Long

  • access2007 VBA データの抽出SQLがわかりません。

    access2007 VBA データの抽出SQLがわかりません。 下記のように記述しているのですが、Aテーブルから必要なデータが抽出できません。どなたかご教授いただけますか。 ※ 「Me.txtSEQ前.Value」「Me.txtSEQ後.Value」はテキストコントロールです。プロパティでの書式設定は何もしていません。 ========================================= Dim intSEQ前 As Long Dim intSEQ後 As Long 'テキストコントロールなので、数値型にする。 '分かりやすくするために、ここで定義しています。 intSEQ前 = CLng(Me.txtSEQ前.Value) intSEQ後 = CLng(Me.txtSEQ後.Value) 'データを抽出します 'intSEQ前からintSEQ後に入力された数値を抽出する。 strSQL = "SELECT " strSQL = strSQL & "* " strSQL = strSQL & "FROM Aテーブル " strSQL = strSQL & "WHERE 県コード=1 " strSQL = strSQL & "AND (SEQ >= intSEQ前 OR SEQ <= intSEQ後) " strSQL = strSQL & "ORDER BY SEQ " Set objRs = myDB.OpenRecordset(strSQL, dbOpenSnapshot) ※下記をコメントアウトするとデータは正しく抽出されているようです。 strSQL = strSQL & "AND (SEQ >= intSEQ前 OR SEQ <= intSEQ後) " 以上。よろしくお願い致します。

  • DAOでテーブルの内容を検索したいのですが…

    DAOでテーブルの内容を検索したいのですが… アクセス初心者です。 フォームで取得した値をテーブルで検索して命令するために,次のようなことをしてみましたが,FindFirstのところでエラーがでます。 どうしたらよいのかご指導ください。 コマンドボタンのイベントプロシージャで Private Sub テストテーブル作成_Click() Dim gakki As Integer Dim test As Integer Me.学期 = gakki Me.テスト = test Call testテーブル作成 End Sub として,標準モジュールに Sub testテーブル作成() Dim myDB As DAO.Database Dim myRS As DAO.Recordset Set myDB = CurrentDb Set myRS = myDB.OpenRecordset("T_生徒テスト") myRS.FindFirst "学期ID=" & "" & "gakki" & "" & "AND テストID =" & "" & "test" & "" If myRS.NoMatch = False Then DoCmd.OpenQuery "Q_TSテストA" DoCmd.OpenForm "F_テスト" DoCmd.Close Else DoCmd.OpenQuery "Q_TSテスト" DoCmd.OpenQuery "Q_テスト" DoCmd.Close DoCmd.OpenForm "F_テスト" End If myRS.Close: Set myRS = Nothing myDB.Close: Set myDB = Nothing End Sub としました。よろしくお願いします。

  • 如何したら良いのか分かりません。

    Access2000/Windows2000を使用してます。 車検到来年を自動計算させようとしてます。 現在よりも小さい場合は、車検到来区分によって現在の日付以上になるように計算させるようにしたいのですが・・・ 以下の組み方ではうまく出来ません。如何したら良いのかアドバイス宜しくお願い致します。 Private Sub コマンド233_Click() Dim MyDB As DAO.Database Dim MyRS As DAO.Recordset Dim strDate As String Dim strSyakenDate As String '現在の年月日を退避しておく strDate = Format(Date, "yyyymmdd") Set MyDB = CurrentDb() Set MyRS = MyDB.OpenRecordset("基保有") Do Until strSyakenDate > strDate Select Case MyRS.Fields("車検到来区分") Case 1 MyRS.Fields("車検到来年") = MyRS.Fields("車検到来年") + 2 Case 2 MyRS.Fields("車検到来年") = MyRS.Fields("車検到来年") + 1 Case 3 MyRS.Fields("車検到来年") = MyRS.Fields("車検到来年") + 2 Case 4 MyRS.Fields("車検到来年") = MyRS.Fields("車検到来年") + 1 End Select '車検日を再算出 strSyakenDate = Format(MyRS.Fields("車検到来年"), "0000") & Format(MyRS.Fields("車月"), "00") & Format(MyRS.Fields("検日"), "00") Loop MyRS.Update MyRS.MoveNext MyRS.Close End Sub

  • 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

  • エクセルVBAのユーザーフォームにセルデータを

    Excel2007を使っています。 VBA初心者ですがユーザーフォームのテキストフォームにエクセル内のセルデータを表示させたいと考えています。 以下のコードをユーザーフォームのコードに書いてユーザーフォームを走らせましたがユーザーフォームは表示するのですがデータがまったく表示されません。 どなたかご教授いただけませんでしょうか。 Sub Farst() Dim Data1 As String Dim Data2 As String Dim Data3 As String Dim Data4 As String Dim Data5 As String Dim Data6 As String Dim Data7 As String Dim Data8 As String Dim Data9 As String Dim Data10 As String Dim ActiveRow As String ActiveRow = 4 With Worksheets("MDH,MDO") Data1 = .Cells(ActiveRow, 1) Data2 = .Cells(ActiveRow, 2) Data3 = .Cells(ActiveRow, 3) Data4 = .Cells(ActiveRow, 4) Me.TextBox1連番.Text = Data1 Me.TextBox2品番.Text = Data2 Me.TextBox3品番2.Text = Data3 Me.TextBox4品番3.Text = Data4 End With End Sub

  • Access複数のテーブルを1つの既存シートに出力

    Accessの複数のテーブルを1つの既存のエクセルに出力したのですが、どのようにしたらいいのでしょうか? 試しにDO~LOOPのしたにDO~LOOPをもう1つ追加してみたところ、 エラーナンバー75 オブジェクトが開いている場合は、操作は許可されません。 と表示されます。 Private Sub コマンド144_Click() On Error GoTo Err_FileDialog_Click Dim strsql1 As String Dim strsql2 As String Dim strsql3 As String Dim strsql4 As String Dim strTemplate As String Dim strFileName As String Dim ExpFileName As String Dim xlapp As Object Dim xlWB As Object Dim myCn As New ADODB.Connection Dim myRs As New ADODB.Recordset 'ExportData削除 DoCmd.SetWarnings False DoCmd.RunSQL "DELETE from T_EDI_01_CVJ" DoCmd.RunSQL "DELETE from T_EDI_02_OU" DoCmd.RunSQL "DELETE from T_EDI_03_EDI_CUSTOMER" DoCmd.RunSQL "DELETE from T_EDI_04_CUSTOMER" DoCmd.SetWarnings True 'Export用クエリ実行 DoCmd.SetWarnings False DoCmd.OpenQuery ("D_EDI_01_CVJ2") DoCmd.OpenQuery ("D_EDI_02_OU2") DoCmd.OpenQuery ("D_EDI_03_EDI_CUSTOMER2") DoCmd.OpenQuery ("D_EDI_04_CUSTOMER2") DoCmd.SetWarnings True 'ファイル名作成 ExpFileName = "FY24_03_CVJ_EDI" & "_" & Format(Date, "yyyymmdd") strFileName = GetFileName(False, "MicrosoftExcel ブック (*.xlsx)|*.xlsx", "", ExpFileName & ".xlsx") 'EXCELアプリケーションを起動 Set xlapp = CreateObject("Excel.Application") Set myCn = CurrentProject.Connection strsql1 = "T_EDI_01_CVJ" strsql2 = "T_EDI_02_OU" strsql3 = "T_EDI_03_EDI_CUSTOMER" strsql4 = "T_EDI_04_CUSTOMER" 'レコードセットオープン myRs.Open strsql1, myCn, adOpenForwardOnly, adLockReadOnly ' myRs.Open strsql2, myCn, adOpenForwardOnly, adLockReadOnly ' myRs.Open strsql3, myCn, adOpenForwardOnly, adLockReadOnly ' myRs.Open strsql4, myCn, adOpenForwardOnly, adLockReadOnly With xlapp 'テンプレートを開く strTemplate = Application.CurrentProject.Path & "\" & "FY24_03_xxx_CVJ_EDI.xlsx" Set xlWB = .Workbooks.Open(strTemplate) 'テンプレートファイルが存在しないときはエラー If Dir(strTemplate) = "" Then MsgBox "テンプレートファイルを確認してください。", vbOKOnly + vbCritical, "エラー" .Visible = True .Quit Exit Sub End If 'テンプレートファイルオープン .Workbooks.Open strTemplate 'T_EDI_01_CVJの結果値出力処理(1行目にヘッダーを表示しているので、2行目1列目からセット xlWB.Worksheets("CVJ").Rows(2).Insert xlWB.Worksheets("CVJ").Cells(2, 1).CopyFromRecordset myRs ' 'T_EDI_02_OUの結果値出力処理(1行目にヘッダーを表示しているので、2行目1列目からセット ' xlWB.Worksheets("CVJ OU別").Cells(2, 1).CopyFromRecordset myRs ' 'T_EDI_03_EDI_CUSTOMERの結果値出力処理(1行目にヘッダーを表示しているので、2行目1列目からセット ' xlWB.Worksheets("代理店別EDIデータ").Cells(2, 1).CopyFromRecordset myRs ' ' 'T_EDI_04_CUSTOMERの結果値出力処理(1行目にヘッダーを表示しているので、2行目1列目からセット ' xlWB.Worksheets("当月全代理店事業部別データ").Cells(2, 1).CopyFromRecordset myRs Dim I As Long I = 2 xlWB.Worksheets("CVJ").Activate Do While xlWB.Worksheets("CVJ").Cells(I, 1) <> "" I = I + 1 Loop '完了したら保存 If Len(strFileName) = 0 Then xlWB.Close SaveChanges:=False xlapp.Quit MsgBox "処理を中止します。", vbOKOnly + vbInformation Exit Sub Else xlWB.SaveAs FileName:=strFileName End If MsgBox "TX Shuttle用ファイルの出力が完了しました。", vbOKOnly + vbInformation End With Set myRs = Nothing: Close Set myCn = Nothing: Close 'Excelを終了します xlapp.Quit Exit Sub Exit_FileDialog_Click: Exit Sub Err_FileDialog_Click: MsgBox "予期せぬエラーが発生しました" & Chr(13) & _ "エラーナンバー:" & Err.Number & Chr(13) & _ "エラー内容:" & Err.Description, vbOKOnly End

  • Access Excelへ出力時にエラー

    お世話になります。 下記にてローカルクエリの抽出結果をExcelへ出力しております。  Dim obj As Object  Dim MyDB As DAO.Database  Dim MyRs As DAO.Recordset  Dim qdf As DAO.QueryDef  Dim out_path as String  Dim sheet_name as String  out_path = "出力先ファイルのフルパス(ファイル名含む)"  sheet_name = "出力先シート名" Set MyDB = CurrentDb Set obj = GetObject(out_path, "Excel.Sheet") obj.Application.Visible = False obj.Parent.Windows(1).Visible = True Set qdf = MyDB.QueryDefs("ローカルクエリ名") With qdf .Parameters("[forms]![test]![id]") = Forms!test!id Set MyRs = .OpenRecordset .Close End With obj.Worksheets(sheet_name).Select   ← (注) obj.Application.Cells(24, 1).CopyFromRecordset MyRs ※ローカルクエリの抽出条件としてフォーム上のテキストボックスを  参照しているため、Parametersを使ってます。 とりえあず上記で抽出結果は出力されます。 但し、適当なExcelファイルを開いた状態で実行すると、(注)の箇所で 「実行時エラー1004 WorksheetクラスのSelectメソッドが失敗 しました」となってしまいます。 なお、Selectの箇所をActiveにすると「実行時エラー438 オブジェクトは このプロパティまたはメソッドをサポートしていません。」と表示されます。 また、obj.Application.Visible = False の箇所で開いていた Excelファイルが閉じてしまうのですが、そういうものなのでしょうか。 勉強不足で大変恐縮ですが、ご教授の程、宜しくお願い足します。

  • テキストボックスに入れた内容をAccessのテーブルに登録する方法を教えてください。

    はじめまして。 VBでフォームに作ったテキストボックス(text1、text2、text3)に値を入れてコマンドボタンを押したらAccessのテーブルに値を登録できるようにしたいのですが上手くいきません。自分で調べながらコーディングしたのですが上手く動かずどうすれば動くのかVBのコーディングを教えていただきたいです。よろしくお願いします。 [Accessのファイル名] db1.mdb [db1.mdbのテーブル名] ListName [ListNameの各項目] 名前、住所、生年月日 [VBのフォーム] text1.textbox、text2.textbox、text3.textbox Add.command [コーディングの内容] Microsoft DAO 3.6 Object Library参照設定 Private Sub Add_Click() Dim strSQL As String Dim dbName As String Dim dbs As DAO.Database Dim myset As DAO.Recordset Dim ws As DAO.Workspace Set ws = DBEngine.Workspaces(0) Set dbs = ws.OpenDatabase("C:\db1.mdb") If Dir("C:\db1.mdb") <> "" Then strSQL = "INSERT INTO Listname (名前,生年月日, _ 住所) values(text1.text, text2.text, text3.text)" Me.AutoRedraw = True Set myset = dbs.OpenRecordset(strSQL) End If End Sub ※無効な処理です。というエラーが出ます。

専門家に質問してみよう