Access VBA質問箱 IV

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

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


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

【5725】Re:返信ぐらいきちんとやりましょう。
発言  たん  - 05/8/2(火) 11:11 -

引用なし
パスワード
   まず、注意。

返信するなら、きちんと返信ボタン押して返信しましょう。
いちいち新発言にされては、こっちもわからん。

# あと、同じ発言を2つ置かない。

新規mdbでカレンダーコントロールだけ配置して同じ事
やってみたらどうなります?

多分、正常に動くはずです。
動くのであれば、現在、作成中のmdb及びフォームに何らかの
問題があるので、動かないということなのです。
(ただ、その問題が何かはわかりません。質問者のmdbが見える
 訳ではありませんので)
・ツリー全体表示

【5724】カレンダーコントロールの設定
発言    - 05/8/2(火) 11:03 -

引用なし
パスワード
   たん様、ありがとうこざいます。でも、オープン時のソースはMe.Calender.Today
のみで、特にフォームのサイズ変更などは行ってません。
・ツリー全体表示

【5721】Re:応答なしの表示がでる。
回答  小僧  - 05/8/2(火) 9:12 -

引用なし
パスワード
   ▼さつき さん:
おはようございます。

前回のコードと見比べて…フィールド名は「契約者名」? 「契約者」?

Public Function 横並び()

Dim cn As ADODB.Connection
Dim rs1 As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset
Dim sql As String
Dim cr As String
Dim I As Long
Dim J As Long

  'Application.Echo False
  'DoCmd.Hourglass True

  rs1.Open "list", cn, adOpenStatic, adLockReadOnly
  Set cn = CurrentProject.Connection '接続

  Do Until rs1.EOF
    sql = "SELECT * FROM listyoko WHERE 契約者='" & rs1![契約者] & "'"
    rs2.Open sql, cn, adOpenKeyset, adLockOptimistic
 
  If Not IsNull(rs1![区分].value) Then
  
  
'データなし(新規)
    If rs2.EOF Then
      rs2.AddNew
      For I = 1 To 4
        rs2(I - 1) = rs1(I)
      Next I
'データあり(追加)
     Else
      J = 0
'空のフィールドを検索
      Do Until rs2(J * 3 + 1) = "" Or IsNull(rs2(J * 3 + 1))
        J = J + 1
      Loop
   
      For I = 0 To 2
        rs2(I + J * 3 + 1) = rs1(I + 2)
      Next
    End If
'更新
    rs2.Update
    rs2.Close
  End If
  rs1.MoveNext

  Loop

'オブジェクトの解放
  rs1.Close: Set rs1 = Nothing
  Set rs2 = Nothing
  cn.Close: Set cn = Nothing
End Function

「rs2」は「rs1」のレコードが動く度に開き直す形となります。
当然「Open」「Close」の回数が増える訳で、少量のデータでしたら
前回のコードの方が早い(体感的には変わらないかも…)かと思いますが、
「rs2」のレコード数が増えてくると、こちらの方が早い…と思われ…ます。
・ツリー全体表示

【5720】Re:カレンダーコントロールについて
回答  たん  - 05/8/2(火) 9:00 -

引用なし
パスワード
   フォームのオープン時に、DoCmd.Maximize等、フォームの大きさを変更した場合、
カレンダーコントロールの設定は無効になります。
・ツリー全体表示

【5719】カレンダーコントロールについて
質問    - 05/8/2(火) 8:40 -

引用なし
パスワード
   先ほどの投稿で、誤って"お礼"としてしまいましたが、"質問"です。
失礼しました。
・ツリー全体表示

【5718】カレンダーコントロールについて
お礼    - 05/8/2(火) 8:38 -

引用なし
パスワード
   フォームにカレンダーコントロールを貼り付け、開いたときに今日を初期値に
したいのですが、うまくいきません。フォームロード時に Me.Calender.Today
と記述しています。書籍を調べて書いたのですが、何がいけないのでしょうか。
Accessは2003、カレンダーコントロールは11.0です。ご教示お願いいたします。
・ツリー全体表示

【5717】Re:ボタンでIEを開いた時に最前面へ表示す...
回答  YU-TANG WEB  - 05/8/1(月) 23:08 -

引用なし
パスワード
   こんばんは、YU-TANG です。

結局 呼んでいるのは Shell なので、こーゆーのもアリかも。

Shell Environ$("ProgramFiles") & _
   "\Internet Explorer\IEXPLORE.EXE " & _
   "http://www.vbalab.net/", _
   vbNormalFocus)
・ツリー全体表示

【5716】Re:応答なしの表示がでる。
質問  さつき  - 05/8/1(月) 18:39 -

引用なし
パスワード
   前回下記のようなアドバイスを頂いていて、ずっと気になっていたのですが、実際膨大なデータを扱う必要が出てきたので、お教え下さい。

>前回の投稿から色々勉強してみたところ
>「Find」「Filter」等のメソッドは、データ量が多くなると
>パフォーマンスが相当落ちるようです。
>(膨大なデータを業務で扱っている方から情報を頂きました)
>という事で回避方法として、
>>rs2.Open "listyoko", cn, adOpenKeyset, adLockOptimistic
>この時点で全てのレコードをオープンしていますが、
>「rs1」のレコードが動く度に、Where条件をつけて「rs2」をその都度開いた方が
>結果として高速に処理できるかと思われます。

下記のように直してみましたが、「名前または序数に対応する項目がコレクションで見つかりません」と出てしまいます。全くわからないままコードを書いてみましたので、かなり変だと思います。申し訳ありませんが、よろしくお願いいたします。


Public Function 横並び()

Dim cn As ADODB.Connection
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Dim cr As String
Dim I As Long
Dim J As Long

  Application.Echo False
  DoCmd.Hourglass True

  Set cn = Application.CurrentProject.Connection
  Set rs1 = New ADODB.Recordset
 
  rs1.Open "list", cn, adOpenStatic, adLockReadOnly

  sql = "SELECT * FROM listyoko WHERE 契約者名='" & rs1.Fields("契約者名") & "'"
  Set cn = CurrentProject.Connection '接続
  Set rs2 = New ADODB.Recordset
  rs2.Open sql, cn, adOpenKeyset, adLockOptimistic

  Do Until rs1.EOF
  
  If Not IsNull(rs1![区分].Value) Then
    
    
'データなし(新規)
    If rs2.EOF Then
      rs2.AddNew
      For I = 1 To 4
        rs2(I - 1) = rs1(I)
      Next I
'データあり(追加)
     Else
      J = 0
'空のフィールドを検索
      Do Until rs2(J*3+1) = "" Or IsNull(rs2(J*3+1))
        J = J + 1
      Loop
      
      For I = 0 To 2
        rs2(I + J) = rs1(I + 2)
      Next
    End If
'更新
    rs2.Update
  End If
  rs1.MoveNext

  Loop

'オブジェクトの解放
  rs1.Close: Set rs1 = Nothing
  rs2.Close: Set rs2 = Nothing
  cn.Close: Set cn = Nothing
End Function
・ツリー全体表示

【5715】Re:ボタンでIEを開いた時に最前面へ表示す...
回答  小僧  - 05/8/1(月) 17:40 -

引用なし
パスワード
   ▼いなたく さん:
こんにちは。

IEを立ち上げて該当のページを参照するだけでしたら、

Private Sub ボタン_Click()
Dim WSH As Object
  Set WSH = CreateObject("Wscript.Shell")
  WSH.Run "http://www.vbalab.net/vbaqa/c-board.cgi?" _
     & "cmd=ntr;tree=5714;id=access", 3
  Set WSH = Nothing
End Sub

こんな感じでできますがいかがでしょうか。

外していたら申し訳ないです。
・ツリー全体表示

【5714】ボタンでIEを開いた時に最前面へ表示する...
質問  いなたく  - 05/8/1(月) 16:58 -

引用なし
パスワード
   初めまして。VBA初心者ですがよろしくお願いします。
いろいろ調べて試してみたのですが、どうも行き詰ってしまったので、(>_<)
どなたかご教授願いますm(__)m

現在、ACCESSのイベントビルドでボタンをクリックしIEを表示するように
以下のようにして設定しています。
動作的には問題ないのですが、IEのウィンドウが後方に表示されてしまいます。
これをボタンをクリックした際に表示されるIEのウィンドウを最前面に表示
させたいのですが、どなたかご教授願いませんでしょうか?
よろしくお願いします。m(__)m

==============================================================

Private Sub ボタン_Click()
  Dim ObjIE
  Set ObjIE = CreateObject("InternetExplorer.Application")
  ObjIE.Navigate Me.ボタン
  ObjIE.Visible = True
  Set ObjIE = Nothing
End Sub

==============================================================
・ツリー全体表示

【5713】Re:エラーコード3464
お礼  ジュン  - 05/8/1(月) 12:28 -

引用なし
パスワード
   ▼小僧 さん:
>▼ジュン さん:
>こんにちは。
>
>>登録済みのデータを呼び出すとか新規にデータを登録しようとしたところ
>
>この動作を実際にはどうやっているのか(VBA、マクロ、クエリ等)が
>ご提示されておりませんが、Accessで条件式を作る際に良く使われる処理として、
>
>数値型:
>"[フィールド名] = " & [フォーム名]![コントロール名].Value
>
>文字型:
>"[フィールド名] = '" & [フォーム名]![コントロール名].Value & "'"
>

>日付型:
>"[フィールド名] = #" & [フォーム名]![コントロール名].Value & "#"
>
>のようにデータ型の種類によって微妙に異なる事があります。
>
>
>>一度、作成したテーブルを変更することはできないのでしょうか。
>
>テーブルを変更すると、それに伴いフォーム、クエリ、モジュール等の
>大幅な見直しが出てくる場合があります。
>
>今回の様にエラーが発生してくれれば対応できますが、
>エラーも何も出ずに違う結果を返されてしまうと大変な事になるので
>慎重に対応した方が良いと思います。

小僧さん。

ありがとうございました。
SQLで記述するSELECT文の変更が間違っていました。上手くできました。
本当にありがとう御座いました。
・ツリー全体表示

【5712】Re:エラーコード3464
回答  小僧  - 05/8/1(月) 11:28 -

引用なし
パスワード
   ▼ジュン さん:
こんにちは。

>登録済みのデータを呼び出すとか新規にデータを登録しようとしたところ

この動作を実際にはどうやっているのか(VBA、マクロ、クエリ等)が
ご提示されておりませんが、Accessで条件式を作る際に良く使われる処理として、

数値型:
"[フィールド名] = " & [フォーム名]![コントロール名].Value

文字型:
"[フィールド名] = '" & [フォーム名]![コントロール名].Value & "'"

日付型:
"[フィールド名] = #" & [フォーム名]![コントロール名].Value & "#"

のようにデータ型の種類によって微妙に異なる事があります。


>一度、作成したテーブルを変更することはできないのでしょうか。

テーブルを変更すると、それに伴いフォーム、クエリ、モジュール等の
大幅な見直しが出てくる場合があります。

今回の様にエラーが発生してくれれば対応できますが、
エラーも何も出ずに違う結果を返されてしまうと大変な事になるので
慎重に対応した方が良いと思います。
・ツリー全体表示

【5711】エラーコード3464
質問  ジュン  - 05/8/1(月) 11:03 -

引用なし
パスワード
   初めまして。
得意先マスタの登録修正の処理を作成中ですが、キーになる得意先CDのタイプを整数型からテキスト型に変更したところ、以下のエラーコードが出ました。

『実行時エラー:3464 抽出条件でデータ型が一致しない。』

1.最初は得意先CDの整数型でLONG指定で実行して、何件かのデータの登録および修正ができていました。
2.他の処理の都合で、得意先CDをテキスト型に変更して、登録済みのデータを呼び出すとか新規にデータを登録しようとしたところ 得意先CDを入力いたら上記のような結果になりました。

一度、作成したテーブルを変更することはできないのでしょうか。対処方法をお教え下さい。
・ツリー全体表示

【5710】Re:最終項目の最後の移動
発言  小僧  - 05/8/1(月) 10:33 -

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

元のテーブルに「日付」フィールドがあるとすると、

1) クエリを作成して(Ka検査qという名前が既にクエリのようですが)、
  日付で降順にソートする。

2) DMax関数を使って最大日付を求めてからDLookup関数を使う。


2) の方法ですと、

Private Sub Test()
Dim MyDate As Date
  MyDate = DMax("[日付]", "Ka検査q", "[検査コード]='010092'")
  Forms!患者名!TG = DLookup("[検査結果]", "Ka検査q", "[検査コード]='010092' " _
          & "AND [日付]=#" & MyDate & "#")
End Sub

「日付」に該当するフィールドが無い場合は厳しいと思われます。
・ツリー全体表示

【5709】Re:リストの表示
発言  小僧  - 05/8/1(月) 10:13 -

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

>検査結果を一番新しいやつだけを表示するやり方はありますか。

「一番新しい」と判断する基準があれば可能だと思います。
最後に追加したレコードを「新しい」と判断するのは無理です。
・ツリー全体表示

【5708】リストの表示
質問  院長  - 05/7/30(土) 16:29 -

引用なし
パスワード
    テーブル;検査結果を引っ張っている
 クエリ;テーブルからのデータを引っ張りたい。
   (項目は多数あり、日にちにつきその結果もたくさんある。)
検査結果を一番新しいやつだけを表示するやり方はありますか。
・ツリー全体表示

【5707】最終項目の最後の移動
質問  安久  - 05/7/30(土) 16:19 -

引用なし
パスワード
   今、Form1とForm2があります。Form1には検査結果の項目とその結果が表示されるようにしています。
 Form1の検査項目は多数あり、検査結果も多数あります。
今、それぞれの項目ごとの結果をForm1のなかのコマンドボタンを押すとその結果がForm2の各項目のテキストボックスに移動するように設定しています。
 しかし、Form1の項目の一つ一つは検査結果が多数(日にちにより値が違う)あるので移動しません。(日にちを指定してその日の結果だけだとできます。)
(今は、Dloolupで指定しています。
  例、 Forms!患者名!TG = ("[検査結果]","Ka検査q","[検査コード]=`010092`")
 このような漢字で全ての検査項目ごとに今は設定しています。
  (Form1はクエリで大元からデータを引っ張っています。)

 Form1の各検査項目の最終の値(各検査項目で最終の日にちが違う)を一度でForm2の各項目の指定のテキストボックスに移動するやり方はありますか? 
 よろしくお願いします。
・ツリー全体表示

【5706】Re:複雑なクエリ処理方法について
質問  MK&db  - 05/7/30(土) 7:21 -

引用なし
パスワード
   ▼Gin_II さん:
>>以下のクエリADがあるとします、クエリADを使って、列の縦方向の合計が
>>ゼロの列を除外したいです。このような煩雑な処理は可能でしょうか?
>
>VBAを使って、動的にクエリのSQL文を編集すれば可能だと思います。
>このクエリADは、元のテーブルも同じようなレイアウトなのでしょうか?
返答ありがとうございます。
クエリADは元のテーブルから抽出したものです。
・ツリー全体表示

【5705】Re:複雑なクエリ処理方法について
回答  Gin_II  - 05/7/29(金) 23:33 -

引用なし
パスワード
   >以下のクエリADがあるとします、クエリADを使って、列の縦方向の合計が
>ゼロの列を除外したいです。このような煩雑な処理は可能でしょうか?

VBAを使って、動的にクエリのSQL文を編集すれば可能だと思います。
このクエリADは、元のテーブルも同じようなレイアウトなのでしょうか?
・ツリー全体表示

【5704】複雑なクエリ処理方法について
質問  MK&db  - 05/7/29(金) 21:19 -

引用なし
パスワード
   初めて投稿しました。
よろしくお願いします。
以下のクエリADがあるとします、クエリADを使って、列の縦方向の合計が
ゼロの列を除外したいです。このような煩雑な処理は可能でしょうか?
ご伝授ください。

クエリAD
ModelNo  NameNo    Fe   Cu   Si   Ca   Other
M-1    N-1     20   30   15       35
M-2    N-2     25   30   10       35
M-3    N-3     10   40   15       35



処理後
クエリADNew
ModelNo  NameNo    Fe   Cu   Si   Other
M-1    N-1     20   30   15   35
M-2    N-2     25   30   10   35
M-3    N-3     10   40   15   35

 
・ツリー全体表示

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