Access VBA質問箱 IV

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

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


129 / 500 ページ ←次へ | 前へ→

【10705】すいません、質問の仕方が悪かったです
質問  まる子  - 08/11/9(日) 9:52 -

引用なし
パスワード
   検索文字にキーワードを入力し検索ボタンを押すと、「FROM句の構文エラーです」と表示されます。一応スペルの間違いなどないか確認してみたのですがないようです。whereの空白の部分も含め再度確認してみます。
・ツリー全体表示

【10704】Re:検索ボックスにあいまいな文字を入力...
回答  飛男  - 08/11/9(日) 7:04 -

引用なし
パスワード
   ▼まる子 さん:
>この記述ではどうしてもデバックしてしまいます。ちなみに検索対象はタイトルです。
どこでどんなエラーが出るのかを書かなくちゃ。

リスト印刷19とWhereの間にスペースが必要です。

※半角カタカナはWebでも、Accessのフィールド名にも使わない方が良いですよ。
・ツリー全体表示

【10703】検索ボックスにあいまいな文字を入力し検...
質問  まる子  - 08/11/9(日) 1:23 -

引用なし
パスワード
   今作ろうとしているものは、フォームヘッダーに非連結のテキストボックスを作り
そこに文字を入力し、検索ボタンを押して、結果を詳細に表示させるやり方が分かりません、ご回答くださいます様宜しくお願いします。
一応、下記に私がイベントプロシージャで記述した物を表示しておきます。
この記述ではどうしてもデバックしてしまいます。ちなみに検索対象はタイトルです。


Option Compare Database
Option Explicit
Private Sub 検索_click()
Dim wCNN As ADODB.Connection
Dim wRec As ADODB.Recordset
Dim strSQL As String

Set Me.Recordset = Nothing
Me.注文コード.ControlSource = ""
Me.グループ別.ControlSource = ""
Me.タイトル.ControlSource = ""

Set wCNN = Application.CurrentProject.Connection
Set wRec = New ADODB.Recordset

strSQL = "SELECT * FROM リスト印刷19"
If IsNull(Me.タイトル検索) = False And Len(Me.タイトル検索) <> 0 Then
 strSQL = strSQL & "WHERE タイトル Like '%" & Me.タイトル検索 & "%'"
End If
strSQL = strSQL & ";"
wRec.Open strSQL, wCNN, adOpenStatic, adLockReadOnly
If wRec.EOF = False And wRec.BOF = False Then
Set Me.Recordset = wRec
Me.注文コード.ControlSource = wRec("注文コード").Name
Me.グループ別.ControlSource = wRec("グループ別").Name
Me.タイトル.ControlSource = wRec("タイトル").Name
End If
wRec.Close

Set wCNN = Nothing
Set wRec = Nothing

Me.Requery
End Sub
・ツリー全体表示

【10702】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/11/8(土) 12:58 -

引用なし
パスワード
   ▼MAI さん:
こんにちは
ちょこっとお邪魔します。

直接の回答でもないし、動作確認もしてませんが、
>フラグが ”9”の場合は更新せずに変更を行いたいのですが、旨く出来ませんでした。
Accessのクエリデザイン画面で、SQL画面にしてトキドキ徹 さんの書いたクエリ
を貼り付け、再びデザイン画面に戻します。
そこで、抽出条件に「フラグが ”9”ではない」と言う条件を書き込めば
出来上がると思いますよ。→もう一度SQL画面で確認する。
やってみる価値はあるかと思います。

それと、
>フラグが ”9”の場合は更新せずに変更を行いたいのですが、旨く出来ませんでした。
ですが、何をどうやって、どのような結果が出て、うまく行かなかったって
のを書かないと人には伝わりません。情報はキチンと伝えた方が良いアドバイス
を受けられます。

#関係ないですが、私の興味をそそるってのは、ん?出来るのかな?と
か、自分が忘れているな、と思うような事ですかね。
・ツリー全体表示

【10701】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/7(金) 21:07 -

引用なし
パスワード
   ▼トキドキ徹 さん:
>
>先に回答したとおり、分かりません。
>ゴメンなさい。
トキドキ徹 さん、^^;こんばんは「ゴメンなさい。」なんて
いやいや、とんでもない

トキドキ徹 さんに、一番最初にアドバイスを頂きました。
クエリを使いたい、と思います。
>UPDATE T_受注
>SET T_受注.フラグ =
>Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'")>>=100,3,DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'")>>1,2,True,1);
以前、2分少々かかると発言しましたが、ノートPCでの結果でした。
デスクトップ会社で標準的なPCで行うと、30秒で終了。
十分です。

そこで、再度お願いです。
フラグが ”9”の場合は更新せずに変更を行いたいのですが、旨く出来ませんでした。
 宜しくお願いします。
・ツリー全体表示

【10700】Re:クエリデータをaddnewでテーブルに入...
発言  トキドキ徹  - 08/11/7(金) 18:45 -

引用なし
パスワード
   ▼ver45 さん:
変数i番目ということは、rs2などのレコードセットとして取得して
いるものですよね。

その場合は無理です。
データを指定してください。

クエリとしてWHERE区で1件(または目的のもののみ)指定できる
場合に限ります。
・ツリー全体表示

【10699】Re:クエリデータをaddnewでテーブルに入...
質問  ver45  - 08/11/7(金) 18:41 -

引用なし
パスワード
   ▼トキドキ徹 さん:
>▼ver45 さん:
>追記です
>
>追加する1件をWHERE区で指定できるのであれば、
>先に回答したSQLにて可能です。
>
>mySQL = "INSERT INTO 追加先テーブル " & _
>    "SELECT * FROM 追加元テーブル " & _
>    "WHERE " ・・・・

例えば変数i番目のデータなどと指定することが可能なのでしょうか?
度々申し訳ありません。
・ツリー全体表示

【10698】Re:クエリデータをaddnewでテーブルに入...
発言  トキドキ徹  - 08/11/7(金) 18:33 -

引用なし
パスワード
   ▼ver45 さん:
追記です

追加する1件をWHERE区で指定できるのであれば、
先に回答したSQLにて可能です。

mySQL = "INSERT INTO 追加先テーブル " & _
    "SELECT * FROM 追加元テーブル " & _
    "WHERE " ・・・・
・ツリー全体表示

【10697】Re:クエリデータをaddnewでテーブルに入...
質問  ver45  - 08/11/7(金) 18:30 -

引用なし
パスワード
   ▼トキドキ徹 さん:
>▼ver45 さん:
>>色々なクエリから取り込む際は基本的に列挙しなければSQLでは不可能ということなのでしょうか。
>
>先の回答のとおり
>> 全てのフィールドのデータを指定できるのであれば
>省略も可能です。
>
>追加データも省略する訳ではないですよね?

ありがとうございます

追加データは省略しません。
・ツリー全体表示

【10696】Re:クエリデータをaddnewでテーブルに入...
発言  トキドキ徹  - 08/11/7(金) 18:28 -

引用なし
パスワード
   ▼ver45 さん:
>色々なクエリから取り込む際は基本的に列挙しなければSQLでは不可能ということなのでしょうか。

先の回答のとおり
> 全てのフィールドのデータを指定できるのであれば
省略も可能です。

追加データも省略する訳ではないですよね?
・ツリー全体表示

【10695】Re:クエリデータをaddnewでテーブルに入...
質問  ver45  - 08/11/7(金) 18:20 -

引用なし
パスワード
   ▼トキドキ徹 さん:
>▼ver45 さん:
>> 列名を指定せずに書き込み用のテーブルに書き込みたいのです。
>基本的に追加クエリでは、列名必須です。
>
>全てのフィールドのデータを指定できるのであれば
>> mySQL = "INSERT INTO 書込み先テーブル (肉, 野菜, 卵) " & _
>>     "VALUES ('" & rs1("肉") & "', '" & _
>>     rs1("野菜") & "', '" & _
>>     rs1("卵") & "') "
>こちらを
>mySQL = "INSERT INTO 書込み先テーブル " & _
>    "VALUES ('" & rs1("肉") & "', '" & _
>    rs1("野菜") & "', '" & _
>    rs1("卵") & "') "
>のように省略することも可能です。
>VALUES(〜内にデータを順番通りに並べていけば良いだけです。

ご丁寧にありがとうございます。 追加クエリでは列名を列挙しなければならないのですね。

色々なクエリから取り込む際は基本的に列挙しなければSQLでは不可能ということなのでしょうか。
・ツリー全体表示

【10694】Re:クエリデータをaddnewでテーブルに入...
発言  トキドキ徹  - 08/11/7(金) 18:14 -

引用なし
パスワード
   ▼ver45 さん:
> 列名を指定せずに書き込み用のテーブルに書き込みたいのです。
基本的に追加クエリでは、列名必須です。

全てのフィールドのデータを指定できるのであれば
> mySQL = "INSERT INTO 書込み先テーブル (肉, 野菜, 卵) " & _
>     "VALUES ('" & rs1("肉") & "', '" & _
>     rs1("野菜") & "', '" & _
>     rs1("卵") & "') "
こちらを
mySQL = "INSERT INTO 書込み先テーブル " & _
    "VALUES ('" & rs1("肉") & "', '" & _
    rs1("野菜") & "', '" & _
    rs1("卵") & "') "
のように省略することも可能です。
VALUES(〜内にデータを順番通りに並べていけば良いだけです。
・ツリー全体表示

【10693】Re:クエリデータをaddnewでテーブルに入...
発言  トキドキ徹  - 08/11/7(金) 18:04 -

引用なし
パスワード
   ▼ver45 さん:
追記です

"SELECT 〜 FROM 〜"
も不要です
・ツリー全体表示

【10692】Re:クエリデータをaddnewでテーブルに入...
質問  ver45  - 08/11/7(金) 18:02 -

引用なし
パスワード
   申し訳ありません 私の説明が悪くて意図が伝わりづらかったと思います。一件づつという意味はiで回しているレコード行をブレイクのたびに一件づつ書き込んでいきたいという意味でした。言葉足らずで申し訳ありません。

その上で列名を

For ix = 0 To rs1.Fields.Count - 1
          rs2(ix) = rs1(ix)
        Next ix

のように列名を指定せずに書き込み用のテーブルに書き込みたいのです。

重ね重ね申し訳ありません。
・ツリー全体表示

【10691】Re:クエリデータをaddnewでテーブルに入...
発言  トキドキ徹  - 08/11/7(金) 17:51 -

引用なし
パスワード
   ▼ver45 さん:

>肉 野菜 卵ともにデータ型はテキスト型です。
それでは
> データ型によっては、VALUES〜の「'」は外して下さい。
外さないで下さい
・ツリー全体表示

【10690】Re:EXCELへの数式の記述について教...
お礼  NEMO  - 08/11/7(金) 17:46 -

引用なし
パスワード
   ▼neptune さん:
ありがとうございました。
わかりました。
・ツリー全体表示

【10689】Re:クエリデータをaddnewでテーブルに入...
質問  ver45  - 08/11/7(金) 17:34 -

引用なし
パスワード
   ▼トキドキ徹 さん:
>▼ver45 さん:
>一件ずつ追加の場合のSQLです。
>
>mySQL = "INSERT INTO 書込み先テーブル (肉, 野菜, 卵) " & _
>    "VALUES ('" & rs1("肉") & "', '" & _
>    rs1("野菜") & "', '" & _
>    rs1("卵") & "') "
>
>このSQLにて試してみてください。
>データ型によっては、VALUES〜の「'」は外して下さい。

ありがとうございます。処理の間に追加してみたのですが

mySQL = "INSERT INTO 書込み先テーブル (肉, 野菜, 卵) " & _
            "VALUES (" & rs1("肉") & ", " & _
            rs1("野菜") & ", " & _
            rs1("卵") & ") " & _
            "SELECT * FROM 書き込み元テーブル"
            
            CurrentDb.Execute mySQL, dbFailOnError


CurrentDb.Execute mySQL, dbFailOnErrorでエラーになってしまいます。

肉 野菜 卵ともにデータ型はテキスト型です。
・ツリー全体表示

【10688】Re:EXCELへの数式の記述について教...
回答  neptune  - 08/11/7(金) 17:26 -

引用なし
パスワード
   ▼NEMO さん:
こんにちは

Helpを見ましょうね。こんなサンプルまであります。
Rangeオブジェクト、Formula プロパティ
Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10"
・ツリー全体表示

【10687】Re:クエリデータをaddnewでテーブルに入...
発言  トキドキ徹  - 08/11/7(金) 17:16 -

引用なし
パスワード
   ▼ver45 さん:
一件ずつ追加の場合のSQLです。

mySQL = "INSERT INTO 書込み先テーブル (肉, 野菜, 卵) " & _
    "VALUES ('" & rs1("肉") & "', '" & _
    rs1("野菜") & "', '" & _
    rs1("卵") & "') "

このSQLにて試してみてください。
データ型によっては、VALUES〜の「'」は外して下さい。
・ツリー全体表示

【10686】Re:クエリデータをaddnewでテーブルに入...
質問  ver45  - 08/11/7(金) 16:48 -

引用なし
パスワード
   ▼トキドキ徹 さん:
>▼ver45 さん:
>
>> For ix = 0 To rs1.Fields.Count - 1
>> rs2(ix) = rs1(ix)
>> Next ix
>>         
>> rs2.Update
>>
>> としたところ上手く所定の動作が出来るようになりました
>
>これより、テーブルのフィールド構成は同じものと想像します。
>よって
>
>Dim mySQL AS String
>mySQL = "INSERT INTO 追加先テーブル " & _
>    "SELECT * FROM 追加元テーブル "
>CurrentDB.Excute mySQL, dbFailOnError
>
>とすると良いでしょう

ご丁寧にありがとうございます。

すみません 現在このようなコードになっていまして、newkeyとoldkeyを比較して
違った場合に出力するという処理を行っています。列名はこの三つ以外にもありますが、肉と野菜と卵これらの一つでも切り替わった時に書き込まれる用になっております。

For i = 1 To rs1.RecordCount

    NewKey = Trim(rs1!肉) & "|" & Trim(rs1!野菜) & "|" & Trim(rs1!卵)
    
      If NewKey <> OldKey Then
       
        mySQL = "INSERT INTO 書き込み先テーブル " & _
        "SELECT * FROM 書き込み元テーブル "
        CurrentDb.Execute mySQL, dbFailOnError
        
      End If
    
      OldKey = Trim(rs1!肉) & "|" & Trim(rs1!野菜) & "|" & Trim(rs1!卵)
   
    rs1.MoveNext
  Next i

今の状態はブレイクする度に、全てのデータが書き込み先に書かれてしまいまして、1回ブレイクするごとにSQLで1件づつデータを書き込まれる用にしたいのです。

情報が足りず重ね重ね申し訳ありません。
・ツリー全体表示

129 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1082884
(SS)C-BOARD v3.8 is Free