Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1960 / 2272 ツリー ←次へ | 前へ→

【4450】SQL更新のWHERE句 nssnk 05/2/22(火) 23:59 質問[未読]
【4451】Re:SQL更新のWHERE句 クロ 05/2/23(水) 8:32 回答[未読]
【4452】Re:SQL更新のWHERE句 nssnkg 05/2/23(水) 12:23 質問[未読]
【4453】Re:SQL更新のWHERE句 クロ 05/2/23(水) 14:57 回答[未読]
【4454】Re:SQL更新のWHERE句 nssnkg 05/2/23(水) 16:32 お礼[未読]
【4456】Re:SQL更新のWHERE句 クロ 05/2/23(水) 16:52 回答[未読]
【4457】Re:SQL更新のWHERE句 nssnkg 05/2/23(水) 17:13 お礼[未読]

【4450】SQL更新のWHERE句
質問  nssnk  - 05/2/22(火) 23:59 -

引用なし
パスワード
   更新クエリを作成してWHERE句の書き方が分かりません。悩んでます。
どなたか教えて頂けないでしょうか。
Me!txtB(テキスト型) Me!dateA(日付) Me!dateB(日付) は
フォームのテキストボックスから入力できるようにしたいのですが・・


'テキストボックスに入力した値を使って抽出したレコードを更新

Private Sub cmd更新_Click()
  Dim mySQL As String    'SQLステートメント
  Dim cn As New ADODB.Connection
  Dim com As New ADODB.Command
  
  
    '更新クエリを作成
    mySQL = "update T_商品 set 商品グループ = '" & Me!txtB & "' " _
       & "WHERE 日付 BETWEEN Me!dateA AND Me!dateB "
   
    '接続
    Set cn = CurrentProject.Connection
   
    '更新クエリを実行
    com.ActiveConnection = cn
    com.CommandText = mySQL
    com.Execute
    
    'フォームの再クエリ
    Me.Requery
   

End Sub

【4451】Re:SQL更新のWHERE句
回答  クロ  - 05/2/23(水) 8:32 -

引用なし
パスワード
   mySQL = "update T_商品 set 商品グループ = '" & Me!txtB & "' " _
       & "WHERE 日付 BETWEEN #" & Me!dateA & "# AND #" & Me!dateB & "#;"

かな?
※dateAとdateBともに日付書式で入力しているとして...

【4452】Re:SQL更新のWHERE句
質問  nssnkg  - 05/2/23(水) 12:23 -

引用なし
パスワード
    クロさん 先程は大変有難うございました!本当にど素人の私にはVBAは敷居が高すぎです。しかしお陰様で2日越しの悩みが晴れました。
 ところが他で応用を利かせようとしたらまた問題が発生しました。。トホ、、
フォームから更新させようとすると ”データーの競合”で”このレコードは他の
ユーザーによって更新されています”というメッセージが出てしまいます。
フォームのレコードソースは 顧客マスター、受注伝票、のクエリです。受注明細っていうサブフォームもくっついてます。
良い方法があれば是非ご指導願います。お手間を取らせて申し訳ありません。

Private Sub コマンド102_Click()
  Dim mySQL As String  'SQLステートメント
  Dim cn As New ADODB.Connection
  Dim com As New ADODB.Command
  
     '更新クエリを作成
    mySQL = "update 受注伝票 set 集計月 = #" & 伝票日付 & "# " _
       & "WHERE ((顧客コード = " & 顧客コード & ") and (伝票日付 Between #" & Me!date2 & "# And #" & Me!伝票日付 & "#));"
   
    '接続
    Set cn = CurrentProject.Connection
   
    '更新クエリを実行
    com.ActiveConnection = cn
    com.CommandText = mySQL
    com.Execute
    
    'フォームの再クエリ
    Me.Requery
End Sub

【4453】Re:SQL更新のWHERE句
回答  クロ  - 05/2/23(水) 14:57 -

引用なし
パスワード
   ADOは不得手なので...

>Private Sub コマンド102_Click()
>  Dim mySQL As String  'SQLステートメント
>  Dim cn As New ADODB.Connection
>  Dim com As New ADODB.Command
>  
>     '更新クエリを作成
>    mySQL = "update 受注伝票 set 集計月 = #" & 伝票日付 & "# " _
>       & "WHERE ((顧客コード = " & 顧客コード & ") and (伝票日付 Between #" & Me!date2 & "# And #" & Me!伝票日付 & "#));"
>   
>    '接続
>    Set cn = CurrentProject.Connection
>   
>    '更新クエリを実行
    Set com.ActiveConnection = cn

     ↑ここかな

>    com.CommandText = mySQL
>    com.Execute
>    
>    'フォームの再クエリ
>    Me.Requery
>End Sub

【4454】Re:SQL更新のWHERE句
お礼  nssnkg  - 05/2/23(水) 16:32 -

引用なし
パスワード
   クロさん、本当に有難うございました。さっそく試しました。
データーの競合・・は表示されますがテーブルを開くと
レコードは更新してました。エラー表示は無視してもかまいません
でしょうか。もしそうならエラー表示を回避する方法はありますか?
それと、更新後にレコードがとんでもない日付の位置まで(たぶん
最初ごろのレコード)飛んで表示したりします。更新した位置で
フォームに表示してあるレコードを保持する方法はありますか?
たびたびお手数を掛けますが宜しくご指導お願いします。

【4456】Re:SQL更新のWHERE句
回答  クロ  - 05/2/23(水) 16:52 -

引用なし
パスワード
   >クロさん、本当に有難うございました。さっそく試しました。
>データーの競合・・は表示されますがテーブルを開くと
>レコードは更新してました。エラー表示は無視してもかまいません
>でしょうか。もしそうならエラー表示を回避する方法はありますか?

当方でのテストはテーブルで行ったのでクエリだと出る可能性は
ありますね。特にリレーションなど組んでいると
クエリの状況が分からないので何とも言えませんが...

>それと、更新後にレコードがとんでもない日付の位置まで(たぶん
>最初ごろのレコード)飛んで表示したりします。更新した位置で
>フォームに表示してあるレコードを保持する方法はありますか?

Private Sub コマンド102_Click()
  Dim mySQL As String  'SQLステートメント
  Dim cn As New ADODB.Connection
  Dim com As New ADODB.Command
  Dim varBM As Variant '現在のレコード位置取得のための変数

  '現在位置取得
  varBM = Me.Bookmark
     '更新クエリを作成
    mySQL = "update 受注伝票 set 集計月 = #" & 伝票日付 & "# " _
       & "WHERE ((顧客コード = " & 顧客コード & ") and (伝票日付 Between #" & Me!date2 & "# And #" & Me!伝票日付 & "#));"
   
    '接続
    Set cn = CurrentProject.Connection
   
    '更新クエリを実行
    Set com.ActiveConnection = cn
    com.CommandText = mySQL
    com.Execute
    
    'フォームの再クエリ
    Me.Requery
    '取得した位置を元に戻す
    Me.Bookmark = varBM
    If Me.NewRecord Then
     DoCmd.GoToRecord , , acNext
    End If
End Sub

【4457】Re:SQL更新のWHERE句
お礼  nssnkg  - 05/2/23(水) 17:13 -

引用なし
パスワード
   クロさん、いろいろと親切に教えて頂き本当に有難うございました。
一人で悩んでいたのですが、なんか自信が沸いてきました。(他力本願ですが)
いろいろ試して、もっと勉強します。

1960 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078267
(SS)C-BOARD v3.8 is Free