Access VBA質問箱 IV

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

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


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

【10645】Re:フラグ更新について(更新クエリ?)
回答  トキドキ徹  - 08/10/31(金) 14:40 -

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

Dlookup関数は少し時間がかかってしまうのが難点ですね。
(ヘルプでもなるべくクエリを使うように勧めているようですし)
いろいろ考えずに力技(?)で押せるところは好きですけど^^;;


Acc2000であればADOが既定だったかと思いますが、
私はDAOに慣れているのでDAOにさせてもらいます。

VBAコードの一例です。
'=======================================
Private Sub sub_Sample()
'要参照設定 Microsoft DAO X.X Object Library
  Dim myDB As DAO.Database
  Dim myRS As DAO.Recordset
  Dim myFilSTR(2 To 3) As String  '** 出荷率ごとの更新値を引数に **
  Dim myLooP As Long
  Dim mySQL As String
  
  Set myDB = CurrentDb
  Set myRS = myDB.OpenRecordset("Q_出荷状況", dbOpenSnapshot)
  
  '出荷率ごとの注文NOを取得
  Do Until myRS.EOF
    If myRS!出荷率 > 1 And myRS!出荷率 < 100 Then
      myFilSTR(2) = myFilSTR(2) & ", '" & myRS!注文NO & "'"
    ElseIf myRS!出荷率 >= 100 Then
      myFilSTR(3) = myFilSTR(3) & ", '" & myRS!注文NO & "'"
    End If
    myRS.MoveNext
  Loop
  
  'T_受注更新
  For myLooP = LBound(myFilSTR) To UBound(myFilSTR)
    If myFilSTR(myLooP) <> "" Then
      myFilSTR(myLooP) = "IN (" & Mid$(myFilSTR(myLooP), 3) & ")"
      mySQL = "UPDATE T_受注 SET フラグ = " & myLooP & _
          " WHERE 注文NO " & myFilSTR(myLooP)
      myDB.Execute mySQL, dbFailOnError
    End If
  Next myLooP
  
  Set myRS = Nothing
  Set myDB = Nothing
End Sub
'=======================================
動かすには「Microsoft DAO X.X Object Library」への参照設定が必要です。

大量データで試してないので分かりませんが、
少しは早くなるかと思います。

コードの細かい解説はご勘弁を^^;;
Accのヘルプや書籍等を参照して下さい。


参考までに
・ツリー全体表示

【10644】クエリデータをaddnewでテーブルに入れる...
質問  ver E-MAIL  - 08/10/31(金) 13:18 -

引用なし
パスワード
   初めましてverと申します。
宜しくお願い致します。

クエリを読み込み重複したデータを一つだけテーブルに追加していくという処理を作成しているのですが

Dim rs1        As ADODB.Recordset
Dim rs2        As ADODB.Recordset

rs2.AddNew

rs2!野菜 = rs1!野菜
rs2!肉 = rs1!肉
rs2!魚 = rs1!魚

rs2.Update


のように作成したのですが、これを読み込んだクエリからフィールド名を取得してテーブルに書き出すように変更したいのです。

何故かといいますと、処理したいクエリごとにフィールド名が異なっているので、addnewとupdateの間の処理を変更せずに処理が出来るようにしたいのです。

宜しくお願い致します
・ツリー全体表示

【10643】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/10/30(木) 23:50 -

引用なし
パスワード
   ▼トキドキ徹 さん: お礼&質問
本当にご丁寧にありがとうございます。
助かりました。
結果は旨く、更新できました。
ただ、更新テーブルのT_受注が3,000件で更新すると、3分かかりました。


>更新の式が煩雑に感じるのであればVBA等で更新するように
>した方が良いかもしれません。

VBAであれば、時間の短縮出来ますか?
VBAはどの様になるのでしょうか?
私も是非、挑戦してみたいのでアドバイスをお願いします。
MAI
・ツリー全体表示

【10642】ハイパーリンクの編集→ファイルを開くまでを自動化...
質問  mari  - 08/10/30(木) 23:23 -

引用なし
パスワード
   お世話になります。初心者ですがよろしくお願いします。
テーブルにハイパーリンクのフィールドを作り、フォームにフィールドに対応しているテキストボックスが
あります。いつもそのフォームを開くとまず目的のテキストボックスでのところで
まず左クリックし、次に右クリック、ハイパーリンクの所へ行き、ハイパーリンクの編集で左クリック、そして参照先ファイルを左クリック、ファイルの場所を左クリック、Dドライブを
左クリックで、最後に目的のフォルダをダブルクリックでやっと目的のファイルを
探すことが出来ます。いつも同じ事をするので目的のフォルダをダブルクリックまでを
コマンドボタンを押すなり、テキストボックスをダブルクリックするなりで、
自動的に出来ないでしょうか、本を読んだり、過去ログを見たりしたのですが、
わかりません。よろしくお願いします。mari
・ツリー全体表示

【10641】Re:レポートの表示(勝手に改行)について
発言  トキドキ徹  - 08/10/30(木) 19:05 -

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

ダメモトで

> テキストボックスのレコードソース:=trim([住所情報])

=trim(replace([住所情報],Chr(13) & Chr(10),""))

としてみて下さい(Acc2000以降)

出来なかったらゴメンなさい。
・ツリー全体表示

【10640】Re:フラグ更新について(更新クエリ?)
回答  トキドキ徹  - 08/10/30(木) 18:50 -

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

少し強引ですが、更新クエリを作ってみました

'==============================
UPDATE T_受注
SET T_受注.フラグ =
Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'")>=100,3,DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'")>1,2,True,1);
'==============================

上記SQLをクエリの新規作成のSQLビューにて貼り付ければOKです。
(ご存知かとは思いますが念のため)

注文NOは文字列型と想定しています。
Switch関数は出荷率の分類が細かい場合も想定して使用しました。
分かりにくければIIF関数にて代用しても良いでしょう。

更新の式が煩雑に感じるのであればVBA等で更新するように
した方が良いかもしれません。


参考までに
・ツリー全体表示

【10639】レポートの表示(勝手に改行)について
質問  morik  - 08/10/30(木) 14:15 -

引用なし
パスワード
   ACCESSのレポートについてご質問です。

現在、Office2000にて住所情報を印刷するレポートの作成を行っております。

レポート印刷時に下記の住所情報の場合、『神奈川県』勝手に改行されてすべての情報が印刷されない現象が起きて困ってます。

テキストボックスのレコードソース:=trim([住所情報])

印字したい住所情報(すべて全角)
『神奈川県×××××××××××××××××××××××××××××××××××終』

印字結果
『神奈川県
×××××××××××××××××××××××××××××××××××終』

※↑神奈川県で勝手に改行されてしまいます。

レポートの住所情報は最大全角40文字のためレポートに表示するテキストボックスの領域も全角40文字分しか確保できておりません。

県名の後ろが『1−1−10』などの場合も同様の現象がみられます。

上記現象の回避策をご存知の方がいらっしゃいましたらご教授をお願い致します。
・ツリー全体表示

【10638】Re:データ更新時の判断について
お礼  初心者です。  - 08/10/30(木) 10:40 -

引用なし
パスワード
   もう少々がんばってみますが
駄目なときは再度相談させて
もらいます。
・ツリー全体表示

【10637】Re:データ更新時の判断について
発言  neptune  - 08/10/29(水) 22:39 -

引用なし
パスワード
   ▼初心者です。 さん:
こんにちは

>たとえば、キーとなる項目により、処理を1.テーブルに
>新規登録・2.データ更新を行いたいのですが・・・
>テーブルに更新しようとするキー項目があるかどうかを
>SELECT文で判断して、その問い合わせ後のカウン
>トが0の場合、INSERT文
>0以外の場合はUPDATE文でテーブルを更新するよ
>うなことは可能でしょうか?
その手順でやったらどうですか?そのまんまでいけると思いますが?
SELECT文はdolookupでしたっけ?で代用できるとは思いますが。

テーブルを変更できるなら、そのキーに重複なしの属性を設定しておくとか。

いずれにしても、ここまで分かっているならHelpが一番と思いますよ。
サンプルソースもたっぷりあるし。
・ツリー全体表示

【10636】フラグ更新について(更新クエリ?)
質問  MAI  - 08/10/29(水) 22:32 -

引用なし
パスワード
   初心者です。宜しくお願い致します。

2つのテーブルを使用し、フラグを更新を行いたいのですが宜しくお願い致します。

実現したい事。
受注データ
T_受注があります。

注文NO  品目CD  受注数量 納期    フラグ
0001   101      100 2008/11/1   1
0002   103      50 2008/11/4   1
0003   106      200 2008/11/8   1
0004   108      150 2008/11/29   1

出荷データ
T_出荷があります。

注文NO  品目CD  出荷数 出荷日
0001   101    10   2008/10/29
0001   101    10   2008/10/30
0001   101    40   2008/11/1
0002   103    50   2008/10/28
0003   106    50   2008/10/29
  

T_出荷を元に
Q_出荷状況

注文NO  受注数量 出荷数合計  出荷率
0001     100      60    60
0002      50      50   100
0003     200      50    25

としています。
Q_出荷状況を元に、T_受注のフラグを更新を行いたいのですが

Q_出荷状況の出荷率が
 1以上の場合は 2
 100以上は   3 とフラグを更新を行いたいのですが
更新クエリでできるのでしょうか?
又、他に良い方法をアドバイスして下さい。
・ツリー全体表示

【10635】Re:エクセルに値渡ししたい
回答  neptune  - 08/10/29(水) 22:32 -

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

>エクセルで、 hoge を
>Const hoge As String = "fuga"
>のようにして使用しているのですが
>
>アクセスフォームのリストボックスの値を
>list_str = Me.リスト0.Column(1)
>として
>
>xls.Run "一括処理",list_str
>
>のように、値渡ししたいと思っているのですが
Excel側の"一括処理"に引数を持たせなければなりません。

sub 一括処理(byval pstr as string)
・・・

従って
>Const hoge As String = "fuga"
を使用しないようにすべきと思います。

例えば
sub 一括処理(optional byval pstr as string="fuga")
とするとか。

方法はお好きなものにどうぞ。
・ツリー全体表示

【10634】データ更新時の判断について
質問  初心者です。  - 08/10/29(水) 17:35 -

引用なし
パスワード
   データ更新の方法を教えてください。
ACCESSでの作成は今回が初めてで試行中です。
ACCESS2000,WINDOWSXP(SP2)で作成してます。

入力用画面を作成し、その画面に更新ボタンを
準備したとします。
データを入力して入力がおわったら
そのボタンを押してテーブルを更新したいのです。

たとえば、キーとなる項目により、処理を1.テーブルに
新規登録・2.データ更新を行いたいのですが・・・
テーブルに更新しようとするキー項目があるかどうかを
SELECT文で判断して、その問い合わせ後のカウン
トが0の場合、INSERT文
0以外の場合はUPDATE文でテーブルを更新するよ
うなことは可能でしょうか?

どなたか、参考にできるサイトなどあれば教えてください
御願いします。
・ツリー全体表示

【10633】エクセルに値渡ししたい
質問  ON  - 08/10/29(水) 13:55 -

引用なし
パスワード
   こんにちは
よろしくお願い致します


エクセルを開いて、エクセルマクロを実行し、
その結果をアクセスにインポートしています


    Set xls = CreateObject("Excel.Application")

    Set wkb _
      = xls.Workbooks.Open( _
          Filename:=CurrentProject.Path & "\foo.xls")

    xls.Run "一括処理"

    wkb.Close SaveChanges:=True
    xls.Quit


    ・・・・

    DoCmd.TransferSpreadsheet・・・・


でこの時

エクセルで、 hoge を
Const hoge As String = "fuga"
のようにして使用しているのですが

アクセスフォームのリストボックスの値を
list_str = Me.リスト0.Column(1)
として

xls.Run "一括処理",list_str

のように、値渡ししたいと思っているのですが
どのように記述すればいいのかわかりません

アドバイスよろしくお願い致します
・ツリー全体表示

【10632】Re:サブフォームのデーター確認
回答  Gin_II  - 08/10/28(火) 21:47 -

引用なし
パスワード
   >Private Sub 検索○NO_Click()
>  Me!Forms!●仕入表示.○NO.SetFocus  ”●仕入表示はサブフォーム名
>  DoCmd.FindRecord Me!検索○NO
> End Sub
>
>としたのですが、参照のFormsフィールドがみつかりませんと出てしまいます。

Me!コントロール名.SetFocus
 Or
Forms!フォーム名!コントロール名.SetFocus

のどちらかで記述してください。

また、記号などをオブジェクト名として使っているのなら、やめたほうが
いいですよ。トラブルの元なので。

今のオブジェクト名でいくのであれば、

Me("コントロール名").SetFocus
 Or
Forms("フォーム名").Controls("コントロール名").SetFocus

のように記述したほうが無難かも。

○使わないほうがいいもの
 ・全角英数
 ・半角カナ
 ・アンダーバー以外の記号
 ・特殊文字
 ・スペース
など。
・ツリー全体表示

【10631】サブフォームのデーター確認
質問  まー  - 08/10/25(土) 13:15 -

引用なし
パスワード
   こんにちは。
またまたわからないことがあったのでご質問させていただきます。

現在仕入と販売の2つのフォームを作っております。
販売フォームに入力時ですが、
サブフォーム(○NO同士でリンク)から値の代入という方法を
行っております。

ダブって入力を防ぐため検索○NOテキストに値を代入し検索コマンドで
該当がないか確認してから新規入力としたいのですが、

Private Sub 検索○NO_Click()
  Me!Forms!●仕入表示.○NO.SetFocus  ”●仕入表示はサブフォーム名
  DoCmd.FindRecord Me!検索○NO
End Sub

としたのですが、参照のFormsフィールドがみつかりませんと出てしまいます。

どこが間違っているのでしょうか。
よろしくお願いいたします。
・ツリー全体表示

【10630】Re:抽出クエリで選択したものを人が判断...
お礼  nawa  - 08/10/23(木) 21:22 -

引用なし
パスワード
   レスが得られなかったため、マルチポストになりますが、一度他のHPで質問お願いしてみます。
結果が得られましたら、こちらにも報告させていただきますので、ご理解よろしくお願いします。
・ツリー全体表示

【10629】Re:DISTINCTが作動しなくなりました。
お礼  nawa  - 08/10/23(木) 21:21 -

引用なし
パスワード
   レスがつくことを期待して待ってみます。
でも、現時点でも大変勉強になりました。
有難うございました。
・ツリー全体表示

【10628】Re:DISTINCTが作動しなくなりました。
発言  neptune  - 08/10/23(木) 16:43 -

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

>もとのデータが1つのテーブルではなくUNIONクエリのため、エラーの回避の仕方がわかりません。
>
>どのようにしたらいいのでしょうか?
すみません。SQLのみでは私もわかりません。

思い付くのは力技で、レコードセットで総なめしていくとかぐらいです。
めちゃくちゃ時間がかかるとは思いますが。

識者のアドバイスを待ちましょう。
・ツリー全体表示

【10627】Re:DISTINCTが作動しなくなりました。
質問  nawa  - 08/10/22(水) 21:57 -

引用なし
パスワード
   ▼neptune さん:
返信有難うございました。
確かにこれが原因と思われます。

今回自分が作成したものは、
テーブル1 と テーブル2 と テーブル3
をUNIONクエリで結合し、それを
メインテーブルとリンクして、選択クエリで抽出しています。

この最後のクエリが重複が多いため
DISTINCTを使っています。

もとのデータが1つのテーブルではなくUNIONクエリのため、エラーの回避の仕方がわかりません。

どのようにしたらいいのでしょうか?

よろしくお願いします。
・ツリー全体表示

【10626】Re:クエリ条件抽出欄の増加
発言  neptune  - 08/10/22(水) 13:05 -

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

>部品番号を全て一致させてその部品番号だけのデータが欲しのですが、抽出条件に全ての番号を入れていると9段までしか入りませんでした。
>
>抽出条件が増加できればと思うのですが、もしそれが出来なければ何かいい方法はないでしょうか?
増加させる方法があるないかは知らないのですが、
未確認で申し訳ないのですが、SQL表示にして、Where条件にSQLで追加できませんか?

Access自体の制限は
///////以下「Access データベースのクエリの定義」Helpより////////
WHERE または HAVING 節での AND の数 40
SQL ステートメントの文字数 約 64,000
///////////////////////////////////////////////
となっていますから、大丈夫では?
・ツリー全体表示

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