Access VBA質問箱 IV

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

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


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

【4373】Re:抽出条件にFormat関数は使えないのでし...
回答  クロ  - 05/2/8(火) 17:55 -

引用なし
パスワード
   > WHERE ((Format([伝票日付],"yyyymm"))=Format([Forms]![A伝票日付],"yyyymm")))

フォーム名が「A伝票日付」ならコントロールが指定されてませんし、
「A伝票日付」コントロール名ならフォーム名が指定されていませんが...
その辺では?
・ツリー全体表示

【4372】検索フォーム内でのフォーカス(カーソル?...
質問  mako  - 05/2/8(火) 16:14 -

引用なし
パスワード
   製品を作る標準書番号の管理台帳のテーブルがあります。
そのテーブルには標準書番号、製品名、製品コード、廃止日の
フィールドがあります。

製品コードを入力してenterキーを押すと、標準書番号、製品名、廃止日
(廃止していない標準書は空白)がでてくる検索フォーム(選択クエリ)を
作成しました。

製品の統廃合などの都合で、ひとつの品コードに対して
いくつかの標準書番号が存在する場合があるので、並べ替えを降順にして
最新の情報が一番最初に出てくるようにしました。

最新の情報が画面に表示されていてもenterキーを押すたびに
どんどん古い情報が画面に表示されていき、最後は製品コード(検索に使った)
以外は空白になります。

そこで。。。使用者の希望が二つ発生してしまったのです。

1.一番古い情報を確認した後、また最新の情報を見たい
2.一番最初にenterキーを押した時点で、その製品コードに対して
 何個の標準書番号が存在するのか知りたい

の二つです。
2.は重複クエリというのをみつけたのですが、
その結果をフォームに表示する方法がわかりません。
いつも、初歩的な質問で説明もへたですみません。
どうか教えて下さい。お願いします。
・ツリー全体表示

【4371】抽出条件にFormat関数は使えないのでしょ...
質問  さつこ  - 05/2/8(火) 15:26 -

引用なし
パスワード
   よろしくお願いします!

テーブルでは年月日で登録されているデータから、画面入力された年月と同じデータを
抽出したいのですが、クエリーでは抽出されるのに、コードにSQLを展開すると、
うまくいきません。

ex.伝票日付  2005/01/01 〜 2005/02/28 のデータがある
  画面年月  2005/01 2005/01 月分のデータを抽出したい
  抽出条件  WHERE ((Format([伝票日付],"yyyymm"))=Format([Forms]![A伝票日付],"yyyymm")))

  実行すると、上記の Format([伝票日付],"yyyymm") で、
  指定した式で参照されている'|'フィールドが見つかりません。 というエラーが
  出てしまいます。クエリーでは、Format([伝票日付],"yyyymm") はテーブル欄に
  テーブル名は表示されないので、それが原因なのかなとは思うのですが、
  これをどのように回避するかがわかりません。

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

【4370】Re:確立密度関数について
発言  クロ  - 05/2/8(火) 15:22 -

引用なし
パスワード
   こんな方法はどうでしょうか?
http://www.ruriplus.com/msaccess/tch/tch_026.html
・ツリー全体表示

【4369】既存のデータベースの削除
質問  ゴン太  - 05/2/8(火) 11:21 -

引用なし
パスワード
   Accessを立ち上げた時に、既存のデータベースを開くで
今まで作成したデータベースが表示されます。
その中で、削除したのにココには表示されます。
表示されず削除したいのですが、どのようにすればよいですか?
・ツリー全体表示

【4368】確立密度関数について
質問  ひろみち  - 05/2/8(火) 11:16 -

引用なし
パスワード
   はじめまして。
アクセスのVBAでエクセルのNORMSDIST関数を使う方法、もしくは同様の関数があるのか
知っている方、アドバイスをお願いします。
・ツリー全体表示

【4367】Re:レコードの追加の仕方
お礼  コロッケ  - 05/2/7(月) 20:24 -

引用なし
パスワード
   ▼かろちん さん:
>何がどううまくいかないのかが掛かれていないので
>よく分かりませんが、
>
>>      I = 34 - (LRs.Fields("CNT") Mod 17)
>この行のことでしょうか?
>17で割ったあまりを34より引いているからということかな
>
>I = 34 - (LRs.Fields("CNT") Mod 34)

返事おくれてすみません

はい、指摘のところが間違っていました。ありがとうございます
・ツリー全体表示

【4366】Re:コマンドボタンからプログラムに関連づ...
回答  クロ  - 05/2/7(月) 13:29 -

引用なし
パスワード
   shell("teratermアプリのフルパス 起動したいファイルのフルパス",1)
で大丈夫かと...
※「teratermアプリのフルパス」と「起動したいファイルのフルパス」の
 間に半角スペースあり
 teraterm自体使用していないので分からないけど...
・ツリー全体表示

【4365】コマンドボタンからプログラムに関連づけ...
質問  たけし E-MAIL  - 05/2/7(月) 12:50 -

引用なし
パスワード
   ACCESSのフォームのコマンドボタンからプログラムに関連づけたファイルを開く記述を知りたいです。
Dim stAppName As String

  stAppName = "\\10.83.137.32\unyo_g\home\macro\TTERMPRO\ttermpro.exe" 'Teratermを起動する。
  Call Shell(stAppName, 1)

Exit_ttermexe_Click:
  Exit Sub

Err_ttermexe_Click:
  MsgBox Err.Description
  Resume Exit_ttermexe_Click
  
End Sub
と書いてteratermは起動するのですが、teratermに関連づいたファイルをttermpro.exeのところに書き換えても
エラーになってしまいます。プログラムを指定して関連づいたファイルを開くにはどうすればいいかが
調べてもわからず困っています。(開こうとしているのはteraterm用のマクロファイル(*.ttl)です。

ご教示ください。
・ツリー全体表示

【4364】Re:エクセルの編集メッセージ
回答  ひろのしま  - 05/2/7(月) 12:49 -

引用なし
パスワード
   ▼ひろのしま さん:
>※いつも適切な回答をいただき、まことにありがとうございます。顧客データそのものが外部漏れ禁止なので、
>コメント注のファイル名やシート名に若干の変更を加えております。ご了承ください。
>
>私のやりたいことなのですが、6つに分類されたフォルダ内の、’左3文字’と*_再開する番組一覧表_*,という文字のついたエクセルファイル名を検索し、存在していた時に、特定のセル部分のデータをアクセスにインポートして
>アクセスデータとして残す、という作業なのです。
>で、問題なのは、下記の処理を2回〜5回ほど繰り返した頃にフリーズし、「芸能人_再開する番組一覧表_〜.xlsは、[編集]を選択すると、開いたファイルを編集できます。」というメッセージボックスが出てきてしまいます。
>最初からでなく2〜5回ほど行った後のエラーなので、なかなか原因がつかめません。
>なにか行ってはいけないコマンドをしているのでしょうか?良きアドバイスをお願いします。
>
>'最初に、報告書マスタテーブルを、サービス種別(chnl_bunrui)分インポートする上限-----------
>'チャンネル分類変数------
>Dim SVcnt As Integer 'チャンネル分類カウント
>Dim Chnl_Bunrui As String 'チャンネル分類別フォルダ
>Dim Hairetu As Variant 'チャンネル分類名保存変数
>Hairetu = Array("AV", "音楽番組", "ドラマ", "ニュース”, "お笑い番組", "ドキュメンタリー”)
>
>  '該当する芸能人再開する番組一覧表があれば、再開する番組一覧表をあけ、報告書フォーマットに値を記入する上限------------------
>
>For SVcnt = 0 To 5 'チャンネル分類別ステートメント上限------------------------------------
>  Chnl_Bunrui = Hairetu(SVcnt)
>
>  'チャンネル分類別に再開する番組一覧表を取り出す------------------
>  Dim File_Cnt As Integer 'ファイルカウント変数
>  Dim File_Sum As Integer 'ファイル総数変数
>  Dim File_SaiKS As String 'パス有再開する番組一覧表
>  Dim File_SaiKS_Cut As String 'パス無再開する番組一覧表
>      '初期化
>      File_SaiKS_Cut = ""
>      File_SaiKS = ""
>      File_Sum = 0
>      File_Cnt = 0
>      
>      ChDir Path_SaiKS & Chnl_Bunrui & "\"
>    File_SaiKS = Dir(Path_SaiKS & Chnl_Bunrui & "\" & Me.芸能人 & "_再開する番組一覧表_*.xls", vbDirectory)
>      Do Until File_SaiKS = ""
>        If Replace(File_SaiKS, Path_SaiKS & Chnl_Bunrui & "\", "") Like "" & Me.芸能人 & "_再開する番組一覧表_*.xls" Then
>            File_Cnt = File_Cnt + 1
>            File_SaiKS_Cut = Replace(File_SaiKS, Path_SaiKS & Chnl_Bunrui & "\", "")  'パス名を削除=>でないとブック名を指定できないため
>        End If
>
>        File_SaiKS = Dir()
>      Loop
>    File_Sum = File_Cnt
>
>
>  If File_Sum = 0 Then
>    'ファイルがなければその芸能人はなにも作成しない。
>  ElseIf File_Sum >= 2 Then
>    MsgBox Me.芸能人 & "に該当する再開する番組ファイルが複数存在していますので、どちらかを削除してから行ってください。"
>    End
>  Else
>    '再開する番組一覧表エクセル変数----------------------
>    Dim WKB_SaiKS As Excel.Workbook '精再開する番組ファイル
>    Dim WKS_SaiKS As Excel.Worksheet '各芸能人の再開する番組シート
>    Set Exl = CreateObject("Excel.Application")
>    Set WKB_SaiKS = Exl.Workbooks.Open(Path_SaiKS & Chnl_Bunrui & "\" & File_SaiKS_Cut) '精算付再開する番組ファイル
>    Debug.Print "Openfilename" & Path_SaiKS & Chnl_Bunrui & "\" & File_SaiKS_Cut
>    Set WKS_SaiKS = WKB_SaiKS.Worksheets("Sheet1")
>'    WKS_SaiKS.Select
>
>
>    '再開する番組一覧表の、合計以下3段のインポート--------------
>      Call Moju_報告書マスタテーブル
>    Dim Sai_Cnt As Long '再開する番組数カウント
>    Dim Sai_Sum As Long '再開する番組数合計
>
>    Dim TBLDB As Database 'データベース
>    Set TBLDB = CurrentDb 'データベース変数
>    Dim TDF As TableDef 'テーブル変数
>
>    With WKS_SaiKS
>      '.Activate
>      Sai_Sum = .Range("A1:A65536").Find(what:="合計").Row - 2 - 1 '再開する番組数合計,-2は行標題、-1は列標題
>      'チャンネルと芸能人が該当する再開する番組テーブルがあれば、先に削除しておく。
>        TBL_Keyword = StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ"
>        Call Moju_テーブルクエリ確認
>        If TBL_HIT = 1 Then
>          DoCmd.RunSQL "Drop Table " & StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ;"
>        End If
>      DoCmd.SetWarnings False
>      '報告書マスタテーブルにインポートする前に、チャンネルと芸能人に該当する報告書マスタテーブルのデータがあれば、削除しておく。
>      DoCmd.RunSQL "Delete * From 報告書マスタ where [芸能人]='" & Me.芸能人 & "' and [チャンネル]='" & Chnl_Bunrui & "';"
>
>      'チャンネルと芸能人が該当する再開する番組一覧表の合計以下3段のインポート上限-----------
>      DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ", Path_SaiKS & Chnl_Bunrui & "\" & File_SaiKS_Cut, False, .Name & "!" & Replace(.Range(.Cells(2 + Sai_Sum + 1, 1), .Cells(2 + Sai_Sum + 3, 4 + 5 * (Tuki_Sa + 1) + 7 * (Nen_Sum + SouGoukei))).Address, "$", "")
>      DoCmd.RunSQL "Update " & StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ Set F3='" & Me.芸能人 & "', F4='" & Chnl_Bunrui & "';"
>
>      'テーブルの列の名前を変更する---------。
>      Set TDF = TBLDB.TableDefs(StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ")
>      For FLD_Cnt = 1 To TDF.Fields.Count
>        TBLDB.TableDefs(StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ").Fields(FLD_Cnt - 1).Name = TBLDB.TableDefs("報告書マスタ").Fields(FLD_Cnt - 1).Name
>      Next
>
>      DoCmd.RunSQL "INSERT INTO 報告書マスタ " & _
>             "SELECT " & StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ.* " & _
>             "FROM " & StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ;"
>      'チャンネルと芸能人が該当する報告書マスタのテーブルを削除する。
>      DoCmd.RunSQL "Drop Table " & StrConv(Me.芸能人, vbWide) & Replace(Chnl_Bunrui, "-", "") & "報告書マスタ;"
>      'チャンネルと芸能人が該当する再開する番組一覧表の合計以下3段のインポート上限-----------
>      DoCmd.SetWarnings True
>    End With
>    Debug.Print "closefilename" & Exl.ActiveWorkbook.Name
>    WKB_SaiKS.Close
>'
> '   Exl.ActiveWorkbook.Close
>    Exl.Quit
>    Set WKS_SaiKS = Nothing
>    Set WKB_SaiKS = Nothing
>
>  End If '該当芸能人再開する番組一覧表があれば、再開する番組一覧表をあけ、報告書フォーマットに値を記入する下限------------------
>Next
すみません。かなり長い質問だったので、誰も見る気がしなかったと思います。
ですが、自分自身で解決してしまいましたので、回答いたします。
エクセルファイルを読取専用で開かない限り、そのままcloseしてもQuitしても
編集メッセージは出てくるということです。以上、お騒がせ致しました.
・ツリー全体表示

【4363】Re:フォーカスの移動
発言  DIO  - 05/2/7(月) 9:05 -

引用なし
パスワード
   ▼かろちん さん:
>>サブフォームの詳細で、複数のレコードが表示されるのですが、その一番先頭のレコードのコンボボックスにフォーカスを移動したいのですが、どうすれば良いでしょうか?
>
>サブフォームにフォーカスを飛ばしたらサブフォームの先頭に
>フォーカスが行くと思いますけど。
>
>どの状態の時に先頭に持っていきたいのかが掛かれていないので
>どう回答をすればよいのか分かりませんが。
>
>サブフォーム名.SetFocusやDoCmd.GotoRecord
>なんかをHELPで調べてみては如何でしょうか?
>
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=4350;id=access
>ここと関連があるのでしょうか?

サブフォームの詳細に複数のレコードが表示されるのですが、他のレコードをクリックしたときコンボボックスがNULLの時などは他のレコードにフォーカスを飛ばしたくないのです。
・ツリー全体表示

【4362】Re:フォーカスが戻らない
回答  DIO  - 05/2/7(月) 9:00 -

引用なし
パスワード
   ▼Gin_II さん:
>>Screen.PreviousControl.SetFocusでフォーカスが戻らないですけど、
>
>どのイベントに書いたんですか?
コンボボックスのLostFocusです。
・ツリー全体表示

【4361】Re:フォーカスの移動
回答  かろちん  - 05/2/6(日) 23:44 -

引用なし
パスワード
   >サブフォームの詳細で、複数のレコードが表示されるのですが、その一番先頭のレコードのコンボボックスにフォーカスを移動したいのですが、どうすれば良いでしょうか?

サブフォームにフォーカスを飛ばしたらサブフォームの先頭に
フォーカスが行くと思いますけど。

どの状態の時に先頭に持っていきたいのかが掛かれていないので
どう回答をすればよいのか分かりませんが。

サブフォーム名.SetFocusやDoCmd.GotoRecord
なんかをHELPで調べてみては如何でしょうか?

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=4350;id=access
ここと関連があるのでしょうか?
・ツリー全体表示

【4360】Re:レコードの追加の仕方
回答  かろちん  - 05/2/6(日) 23:37 -

引用なし
パスワード
   何がどううまくいかないのかが掛かれていないので
よく分かりませんが、

>      I = 34 - (LRs.Fields("CNT") Mod 17)
この行のことでしょうか?
17で割ったあまりを34より引いているからということかな

I = 34 - (LRs.Fields("CNT") Mod 34)
・ツリー全体表示

【4359】レコードの追加の仕方
質問  コロッケ  - 05/2/6(日) 18:24 -

引用なし
パスワード
   ADOを使用して定数になるようにレコードの追加をさせたいんですが、
うまくいきません。

目的は棚番号が1グループにつき34レコードになるようにしたい。
34レコード無い場合はレコードを足りない分だけ追加していくというように
しているつもりなんですが、うまくいきません。

使用しているテーブル名は
  総合マスタ
フィールド名は
  店舗・・・・・・・・・・・・数値項目
  棚番号・・・・・・・・・・数値項目
  棚段・・・・・・・・・・・・数値項目
  棚列・・・・・・・・・・・・数値項目
  商品・・・・・・・・・・・・テキスト項目
  商品販売日・・・・・・数値項目
  商品販売更新日・・数値項目
<内容>
  Dim LCn As New ADODB.Connection
  Dim LRs As New ADODB.Recordset
  Dim LRs2 As New ADODB.Recordset
  Dim MySql As String
  Dim I As Integer
  Dim S As Integer
  
  MySql = "SELECT 総合マスタ.店舗, 総合マスタ.棚番号," _
    & "Max(総合マスタ.棚段) AS MAX_DN," _
    & "Max(総合マスタ.棚列) AS MAX_ART," _
    & "Count(総合マスタ.商品) AS CNT " _
    & "FROM 総合マスタ GROUP BY 総合マスタ.店舗, 総合マスタ.棚番号"
    
    LCn.Open CurrentProject.Connection
    LRs.Open MySql, LCn, adOpenForwardOnly
    
  LRs2.Open "総合マスタ", LCn, adOpenKeyset, adLockOptimistic
    Do While Not LRs.EOF
      I = 34 - (LRs.Fields("CNT") Mod 17)
      For S = 1 To I
        LRs2.AddNew
        LRs2.Fields("店舗") = LRs.Fields("店舗")
        LRs2.Fields("棚番号") = LRs.Fields("棚番号")
        LRs2.Fields("棚段") = LRs.Fields("MAX_DN")
        LRs2.Fields("棚列") = LRs.Fields("MAX_ART") + S
        LRs2.Fields("商品") = " "
        LRs2.Fields("商品販売日") = "00000000"
        LRs2.Fields("商品販売更新日") = "00000000"
        LRs2.UpdateBatch
      Next S
      LRs.MoveNext
    Loop
    
  Set LRs2 = Nothing
  Set LRs = Nothing
  Set LCn = Nothing

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

【4358】Re:access プリント項目集計
お礼  chikusa satoru  - 05/2/6(日) 11:44 -

引用なし
パスワード
   有難うございました。

ご指導の件は、確認しましたが最下位データーの合計は設定できますが、最上位又は中間のデーターの設定ができません。
尚、各グループのフッターで合計項目を追加しましたが、合計値は最下位レコードの数だけ1つのデーターが累積して足されしてしまいます。
グループのレベルが変わった時だけ足す設定がありますか。
現在、やむなく別のクエーリーでグループ毎の合計クエーリーを作り、上記の解析クエーリーに付加してそれを各グループのフッターに出力しました。
ご指導の設定が可能なら非常に簡単なのですが、手順がに問題があるのでしょうか
・ツリー全体表示

【4357】ACCESSを排他モードで開く
質問  toto E-MAIL  - 05/2/6(日) 0:39 -

引用なし
パスワード
   VBの自作アプリから
既存MDBを排他モードにして、パスワードを設定する
ことは可能なのでしょうか?
・ツリー全体表示

【4356】Re:access プリント項目集計
回答  Gin_II  - 05/2/5(土) 23:54 -

引用なし
パスワード
   普通に、「グループ化/並べ替えの設定」を使えばできそうですが、何が
問題なのでしょうか??

VBAが必要な場面でもなさそうですし。
・ツリー全体表示

【4355】access プリント項目集計
質問  chikusa satoru E-MAIL  - 05/2/5(土) 12:33 -

引用なし
パスワード
   初めて、投稿します。よろしくお願いします。
質問
 accessのプリントにおいて、グループ毎の集計がうまくできません。
 例
   A−1 1000  
         B−1 200  
                C−1  50
                C−2  40
                C−3  30
                合計  120
         B−2 300
                C−4  30
                C−5  60
                合計  90
         合計  500
   A−2 2000
         B−3 200  
                C−6  40
                C−7  60
                合計  100
         合計 200  
   合計 3000
 
・ツリー全体表示

【4354】Re:テーブルのフィールドの結合
お礼  もも  - 05/2/4(金) 18:36 -

引用なし
パスワード
   >上記をコピーして、そのまま使ったのなら、構文エラーになりそうなところは
>ないと思います。
>どこか変更しているのなら、変更した部分が間違っていると思いますけど (^^ゞ

ありがとうございました。
できました(^o^)
また質問の際には回答の程宜しくお願いします(^_^)
本当に助かりました〜!!
・ツリー全体表示

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