入力フォームの内容をテーブルへ登録するFunctionプロシージャを作成したいのですが上手くいきません。
ご指導いただければと思います。宜しくお願いいたします。
Function WriteMyData() As Boolean
DoCmd.Hourglass True
On Error GoTo errHandler
WriteMyData = False
Set MycnnDst = Application.CurrentProject.Connection
Set MycnnrstDst = New ADODB.Recordset
MycnnrstDst.Open "SELECT 整理番号,発掘者,件名,発生日,曜日,時間," _
& "天候,温度,風,体調," _
& "作業分類,作業詳細," _
& "MAN,MACHINE,MEDIA,MANAGE," _
& "内容,影響,対策,重要度,対策完了,入力日 " _
& "FROM " & MyTableName & " WHERE 整理番号='" & Me.整理番号 & "'", MycnnDst, adOpenKeyset, adLockPessimistic, adCmdText
Select Case Me.MyDataMode
Case "追加"
If MycnnrstDst.EOF Then
MystrTableDst = "INSERT INTO " & MyTableName & " "
If IsNull(Me.対策完了) Then
MystrItemDst = "( 整理番号, 発掘者, 発生日, 件名, 曜日, 時間, " _
& "天候, 温度, 風, " _
& "体調, 作業分類, 作業詳細, " _
& "MAN, MACHINE, MEDIA, MANAGE, " _
& "内容, 影響, 対策, 重要度, 入力日, " ') "
MystrItemSrc = "VALUES ('" & Me.整理番号 & "','" & Me.発掘者 & "'," _
& "#" & Me.発生日 & "#,'" & Me.件名 & "','" & Me.曜日 & "','" & Me.時間 & "'," _
& "'" & Me.重要度 & "',#" & Me.入力日 & "#," _
& "'" & "') "
Else
MystrItemDst = "(整理番号,発掘者,件名,発生日,曜日,時間," _
& "天候,温度,風,体調," _
& "作業分類,作業詳細," _
& "MAN,MACHINE,MEDIA,MANAGE," _
& "内容,影響,対策,重要度,対策完了,入力日,図解ファイル,添付ファイル) "
MystrItemSrc = "VALUES ('" & Me.整理番号 & "','" & Me.発掘者 & "'," _
& "#" & Me.発生日 & "#,'" & Me.件名 & "','" & Me.曜日 & "','" & Me.時間 & "'," _
& "'" & Me.内容 & "','" & Me.影響 & "','" & Me.対策 & "'," _
& "'" & Me.重要度 & "',#" & Me.対策完了 & "#," & "#" & Me.入力日 & "#," _
& "'" & "') "
End If
MystrTableSrc = ""
MystrParmSrc = ";"
MystrSqlDst = MystrTableDst & MystrItemDst & MystrItemSrc & MystrParmSrc
MycnnrstDst.AddNew
MycnnDst.Execute MystrSqlDst, , adCmdText
Me.MyEdited = ""
End If
Case "修正"
MystrTableDst = "UPDATE " & MyTableName & " "
If IsNull(Me.対策完了) Then
MystrItemDst = "SET " _
& "整理番号 = '" & Me.整理番号 & "', " _
& "発掘者 = '" & Me.発掘者 & "', 発生日 = #" & Me.発生日 & "#, " _
& "件名 = '" & Me.件名 & "', 曜日 = '" & Me.曜日 & "', " _
& "入力日 = #" & Me.入力日 & "#, " & "' "
Else
MystrItemDst = "SET " _
& "整理番号 = '" & Me.整理番号 & "', " _
& "発掘者 = '" & Me.発掘者 & "', 発生日 = #" & Me.発生日 & "#, " _
& "件名 = '" & Me.件名 & "', 曜日 = '" & Me.曜日 & "', " _
& "対策完了 = #" & Me.対策完了 & "#, 入力日 = #" & Me.入力日 & "#, " & "' "
End If
MystrItemSrc = ""
MystrTableSrc = ""
MystrParmSrc = "WHERE (連番 = " & Me.連番 & ");"
MystrSqlDst = MystrTableDst & MystrItemDst & MystrItemSrc & MystrTableSrc & MystrParmSrc
MycnnDst.Execute MystrSqlDst
End Select
Forms!HiyariHattoIchiran2013.Requery
WriteMyData = True
ExitMe:
On Error Resume Next
On Error GoTo errHandler
DoEvents
DoCmd.Hourglass False
Exit Function
errHandler:
MsgBox "WriteMyData Error Number " & Err.Number & " : " & Err.Description
WriteMyData = False
Resume ExitMe
End Function
No.3ベストアンサー
- 回答日時:
エラーについては、既出の3つの回答で解決されるかと思います。
私からはそのエラーが解消したとして・・・やっておきたい事を(他の部分も提示されていたので)
やりたい処理を整理されてみてはどうでしょう。
MycnnrstDst は、(「追加」時に)ある/ない判別にしか使ってない様ですね。
MycnnrstDst を得ているのなら、追加時には MycnnrstDst.AddNew してから
MycnnrstDst("整理番号") = Me.整理番号 等羅列して最後に Update すれば良いような気がします。
例)
MycnnrstDst.AddNew
MycnnrstDst("整理番号") = Me.整理番号
・・・
MycnnrstDst("重要度") = Me.重要度
If (Not IsNull(Me.対策完了)) Then
MycnnrstDst("内容") = Me.内容
・・・
MycnnrstDst("対策完了") = Me.対策完了
End If
・・・
MycnnrstDst.Update
そうすれば、INSERT文に記述しているフィールド部分と VALUES 部分の個数/順があっていない
等、間違いがなくなるような気がします。
If IsNull(Me.対策完了) Then 側では、天候, 温度, 風,・・・ に対する VALUES が無さそう
その Else 側では、上記に加え、件名,発生日が "#" & Me.発生日 & "#,'" & Me.件名 で逆 とか
また、「追加」の最後の方で MycnnrstDst.AddNew してますが、この後どうなるのでしょう
変数の宣言部分( Dim なんチャラ )がないので、他の処理で使っているのかもしれませんが・・・
MycnnrstDst.Close しないまま、また MycnnrstDst.Open するとエラーになったような
(実際には Set MycnnrstDst = New ADODB.Recordset しているので大丈夫かと思いますが、Close は必要な気がします)
「修正」時の方では、
> Me.入力日 & "#, " & "' "
ここは、Me.入力日 & "# " で良さそうなんですが
No.2
- 回答日時:
Dim sql As String
としておいて
sql = "SELECT 整理番号,発掘者,件名,発生日,曜日,時間," _
& "天候,温度,風,体調," _
& "作業分類,作業詳細," _
& "MAN,MACHINE,MEDIA,MANAGE," _
& "内容,影響,対策,重要度,対策完了,入力日 " _
& "FROM " & MyTableName & " WHERE 整理番号='" & Me.整理番号 & "'"
Debug.Print sql
MycnnrstDst.Open sql, MycnnDst, adOpenKeyset, adLockPessimistic, adCmdText
でSQL文が正しいか確認したらどうなりますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- PHP 記述のおかしいところを教えて下さい。 1 2023/02/03 11:25
- Access(アクセス) Access DLookup vbaで条件を2件設定したい場合どうすればよいでですか? 現在 If( 1 2023/06/28 14:28
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
実行時エラー3131 FROM 句の構文エラーです について
Access(アクセス)
-
AccessのSQLで、FROM句の構文エラー
その他(データベース)
-
-
4
FROM句の構文エラー ACCESS SQL
その他(データベース)
-
5
access2003 クエリSQL文について
その他(プログラミング・Web制作)
-
6
JOIN使ってないのに、JOIN操作の構文エラーっ
その他(データベース)
-
7
構文エラー:演算子がありません。 ACCESS SQL
その他(データベース)
-
8
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
9
Access2010 「演算子がありません」エラー
その他(データベース)
-
10
Access 2010で実行時エラー3061
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ハイフンとマイナス
-
メールが送れません
-
VBAのTextBoxに半角数字のみ入...
-
scanf( )で日本語を入力する方...
-
Access97のテキストボックスプ...
-
VB2005 TextBoxに何も入力しな...
-
TextBoxに半角数字のみの入力し...
-
EZ-web用のHDMLについて No2
-
ECサイト★2度目以降の情報入力...
-
テキストボックスの入力制限
-
VBScriptsについてご教授下さい。
-
STEAMでゲームを購入したところ...
-
ネット内で「事後通販」という...
-
agodaで現地決済にしたのにカー...
-
カードの請求でApple.combillみ...
-
f´(x)の読み方
-
e-Gov 電子申請について 回答お...
-
二重払いではないのか。
-
Apple Musicだけファミリー共有...
-
読み方教えてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハイフンとマイナス
-
VBAのTextBoxに半角数字のみ入...
-
scanf( )で日本語を入力する方...
-
TextBoxに半角数字のみの入力し...
-
VB2005 TextBoxに何も入力しな...
-
VB.net テキストボックスの入力...
-
テキストボックスの入力制限
-
教えて!全角文字「μ」の半角文...
-
入力フォーム(電話番号)
-
「FROM 句の構文エラーです」が...
-
WinAPIで日本語入力モード(倍...
-
単純なコマンドプロンプトが動...
-
VISAカードの会員番号とは??
-
Access97のテキストボックスプ...
-
インターネットのアドレス欄直...
-
VS2010Exprsライセンスキー取得...
-
バッチの引数をユーザ入力で渡...
-
Apple Musicの学割が登録できない
-
ショートメールの文字入力
-
PHP, Mysql で名前のあいまい...
おすすめ情報