
入力フォームの内容をテーブルへ登録する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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ハイフンとマイナス
-
VBAのTextBoxに半角数字のみ入...
-
入力フォーム(電話番号)
-
テキストボックスの入力制限
-
教えて!全角文字「μ」の半角文...
-
TextBoxに半角数字のみの入力し...
-
VB2005 TextBoxに何も入力しな...
-
ポイントカードなど携帯で登録...
-
VBS 条件中の条件
-
VAB プログラムが動きません。
-
至急です。Yahoo!IDを作りたく...
-
agodaで現地決済にしたのにカー...
-
ネット内で「事後通販」という...
-
海外 スマホ
-
クレジットカードの名義人の入...
-
読み方教えてください
-
アマゾン商品支払い
-
STEAMでゲームを購入したところ...
-
Amazonについてです。 アカウン...
-
ヤフーウォレットで偽名と嘘の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハイフンとマイナス
-
VBAのTextBoxに半角数字のみ入...
-
入力フォーム(電話番号)
-
scanf( )で日本語を入力する方...
-
VB.net テキストボックスの入力...
-
テキストボックスの入力制限
-
VB2005 TextBoxに何も入力しな...
-
メルマガ登録とありますが・・...
-
「10週間ウェブ開発講座」のPut...
-
VBS 条件中の条件
-
gooポイントについて。よろしく...
-
単純なコマンドプロンプトが動...
-
ifでの条件分岐
-
VISAカードの会員番号とは??
-
TextBoxに半角数字のみの入力し...
-
フォーム入力の際、電話番号等...
-
Perl/CGIでのメール記入チェッ...
-
「FROM 句の構文エラーです」が...
-
WinAPIで日本語入力モード(倍...
-
EZ-web用のHDMLについて No2
おすすめ情報