Access VBA質問箱 IV

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

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


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

【9571】フォーム内ハイパーリンクの一括印刷
質問  くわ  - 07/6/13(水) 11:03 -

引用なし
パスワード
   初めて投稿させていただきます。
くわと申します。
フォーム内に抽出したハイパーリンク(エクセルファイル)を
一括で印刷する方法はありますか?
1つ2つならハイパーリンクをクリックし、開いたファイルを
印刷すればよいのですがなにぶん数が多いもので困っています。
色々と自分でも調べたのですが方法が見つかりません。
どうかご教授の程よろしくお願いいたします。
・ツリー全体表示

【9570】抽出結果をレポートへ表示
質問  いっちゃん E-MAIL  - 07/6/13(水) 9:42 -

引用なし
パスワード
   フォーム上でレコードの抽出を検索ボタンをクリック時にできるようになっています。

抽出はVBAを使用しており

Private Sub コマンド13_Click()
Dim varSpt As Variant, strWhare As String

varSpt = Split(Nz(Me!内容, ""), , , vbTextCompare) '検索条件をSpaceで分割。

strWhare = "職務内容 Like '" & Join(varSpt, "*' OR 職務内容 Like '") & "*'"

Me.Filter = strWhare
Me.FilterOn = IsNull(Me!内容) = False

End Sub

というコードが入力されています。


これを使用し抽出したレコードを、フォーム上のプレビューボタンをクリックしたときに

レポートに表示できるようにしたいのですが・・・(-_-;)


VBA初心者なので過去ログを参考に作ろうにもどの部分を使用してよいのかわかりません。

教えてください。お願いしますm(__)m
・ツリー全体表示

【9569】Re:レポートの改ページ
お礼  Miki  - 07/6/13(水) 9:15 -

引用なし
パスワード
   ありがとうございましたー!
是非やってみます。
・ツリー全体表示

【9568】Re:文字列の処理について
質問  夜勤労働者  - 07/6/13(水) 8:57 -

引用なし
パスワード
   素晴らしいヒントをくれましたので、どこから着手すれば、
望んでいる結果になりますか。
引き続きご指導を願いします。

一応何とか、VBの画面で、以下の結果を再現できました。
?Split("07 6 2", " ")(0)
07
?Split("07 6 2", " ")(1)
6
?Split("07 6 2", " ")(2)
2
・ツリー全体表示

【9567】Re:ACCESSで他のソフトを操作する方法
発言  yosidadesu  - 07/6/13(水) 0:16 -

引用なし
パスワード
   このQについては、以前から気になっていました。
(Microsoft Office Document Imaging)はプリンタドライブですよね。
>ACCESSのテーブルに”用紙””枚数”を指定するのは
良しとしても、(Microsoft Office Document Imaging)に仕事を
させるのはAccessの範疇ではないと思っている。
むしろプリンタ選択の柔軟性を損なうのではないでしょうか?
そこまで自動的? にしたいのであればMicrosoftにLink関係を
確認しないと実現できないですね。
但し、Microsoftはパラメタ関係を公開するかは疑問ですが?


>
> お世話になります。

>今やろうとしてること簡単に説明します。
>ACCESSのテーブルに”用紙””枚数”ってタイトルのフィールドがあり、
>そこに一個づつだけ用紙名(tif形式の画像のアドレス)と数字が入っています。
>
>このテーブルを下に指定されたソフト(Microsoft Office Document Imaging)を開き、
>用紙名のデータを読み出し、枚数で指定されている枚数だけ印刷し、
>印刷し終えたらソフトを閉じる
>
>っといった動きをさせたいのですが正直全然VBAが組めません
>組める方いらっしゃいましたら教えてください。
>
>


▼マイキ〜〜 さん:
>お世話になります。
>
>今やろうとしてること簡単に説明します。
>ACCESSのテーブルに”用紙””枚数”ってタイトルのフィールドがあり、
>そこに一個づつだけ用紙名(tif形式の画像のアドレス)と数字が入っています。
>
>このテーブルを下に指定されたソフト(Microsoft Office Document Imaging)を開き、
>用紙名のデータを読み出し、枚数で指定されている枚数だけ印刷し、
>印刷し終えたらソフトを閉じる
>
>っといった動きをさせたいのですが正直全然VBAが組めません
>組める方いらっしゃいましたら教えてください。
・ツリー全体表示

【9566】表形式のレコードを格納したいのですが
質問    - 07/6/12(火) 23:43 -

引用なし
パスワード
   お世話になります。
見ためは表形式の"お茶番号,数量,単位(荷姿)"の
データ入力フォームを作りましたが、いざAccessDBに
追加しようとしたところで詰まってしまいました。
フォームの表形式は同じデザインの行列が20行あります。
1行ずつのデータ(お茶番号)をキーにしてレコードを
追加したいのですが、分かりません。

「更新」ボタンをクリックでテーブル更新をしたいのですが。
よろしくお願いします。
・ツリー全体表示

【9565】Re:社員名だけ固有にしたい。
お礼  よっくん  - 07/6/12(火) 22:38 -

引用なし
パスワード
   解決いたしました。
・ツリー全体表示

【9564】IIF関数、フォームに表示
質問  よっくん  - 07/6/12(火) 21:10 -

引用なし
パスワード
   テーブル      フィールド
社員名テーブル  :社員ID、社員名、社員名フリガナ、削除フラグ
ステータステーブル:ステータスID、ステータス名、ステータスフラグ
日付テーブル   :日付ID、社員ID、ステータスID、日付、
          様子伺いの担当者、備考(帰社した期間)


1.、社員名一人一人の今日の日付から日付を引く計算(date-日付ですか?)
とステータス名が太子堂勤務開始日の場合の計算は0にして表示させたいので
すがどうすればいいですか。

・今日の日付ー日付(date-日付ですか?)
・ステータス名が太子堂勤務開始日の計算は0(太子堂勤務開始日=0)


2.、表形式のフォームに表示させたいです。

社員名、ステータス名、日付、様子伺いの担当者、備考(帰社した日付)、
計算した結果を表示させたいです。


教えてください。お願い致します。


コードには計算、フォームに表示させるコードを書いてないです。

Private Sub コマンド62_Click()

Dim adoCON As ADODB.Connection
Dim adoRS As ADODB.Recordset


Set adoCON = Application.CurrentProject.Connection

Set adoRS = adoCON.Execute
("SELECT T04.社員名, T04.ステータス名, T04.日付, T04.様子伺いの担当 
     者, T04.備考(帰社した期間)
 FROM [SELECT T02.社員ID,
        T03.社員名,
        T01.ステータス名,
        MAX(T02.日付) AS 日付,
        T02.様子伺いの担当者,
        T02.備考(帰社した期間)
      FROM (ステータステーブル T01
     INNER JOIN 日付テーブル T02
      ON T01.ステータスID = T02.ステータスID)
     INNER JOIN 社員名テーブル T03
      ON T02.社員ID = T03.社員ID
     WHERE T01.ステータスフラグ=Yes
      AND T03.削除フラグ=No
     GROUP BY T02.社員ID,
         T03.社員名,
         T01.ステータス名,
         T02.様子伺いの担当者,
         T02.備考(帰社した期間)]. AS T04
INNER JOIN [SELECT T02.社員ID,
          T03.社員名,
          MAX(T02.日付) AS 日付
        FROM (ステータステーブル T01
       INNER JOIN 日付テーブル T02
         ON T01.ステータスID = T02.ステータスID)
       INNER JOIN 社員名テーブル T03
         ON T02.社員ID = T03.社員ID
       WHERE T01.ステータスフラグ=Yes
        AND T03.削除フラグ=No
       GROUP BY T02.社員ID,
            T03.社員名]. AS T05 ON (T04.社員ID = T05.社員 
           ID) AND (T04.日付 = T05.日付);")


  Do Until adoRS.EOF = True
 
    MsgBox (adoRS!日付)

    adoRS.MoveNext
  Loop


adoRS.Close
adoCON.Close

Set adoRS = Nothing
Set adoCON = Nothing


End Sub
・ツリー全体表示

【9563】Re:フォームでの抽出データをテーブルに出...
お礼  メイ子  - 07/6/12(火) 13:30 -

引用なし
パスワード
   ▼小僧 さん

ご丁寧なご回答ありがとうございました。
何かほかのところに問題がありそうですね。
今一度調べてみます。
また、わからないことがありましたら、どうぞよろしくお願いいたします。


>そのメッセージの通り、レコードが0件な為だと思われます。
>
>メイ子さんのご提示された情報を基に
>当方も適当なテーブル・クエリを作り試してみましたが、
>ちゃんと期待通りのレコード数をループする事ができました。
>
>ご提示されていない情報の中に何かヒントが隠されているかもしれませんね。
・ツリー全体表示

【9562】Re:フォームでの抽出データをテーブルに出...
発言  小僧  - 07/6/12(火) 0:07 -

引用なし
パスワード
   ▼メイ子 さん:
こんばんは。


> <BOF と EOF のいずれかが True になっているか、
> または現在のレコードが削除されています。
> 要求された操作には、現在のレコードが必要です。>
> と表示されているのですが、どうしてでしょう?


そのメッセージの通り、レコードが0件な為だと思われます。

メイ子さんのご提示された情報を基に
当方も適当なテーブル・クエリを作り試してみましたが、
ちゃんと期待通りのレコード数をループする事ができました。

ご提示されていない情報の中に何かヒントが隠されているかもしれませんね。
・ツリー全体表示

【9561】Re:フォームでの抽出データをテーブルに出...
質問  メイ子  - 07/6/11(月) 15:52 -

引用なし
パスワード
   ▼小僧 さん
丁寧にお教え頂いて、ありがとうございます。
教えていただいたとおりに記述しましたら、ファイルのオープンはできたのですが、「Do Until RS.EOF」以降のデータの書込みのところがなにもせずに終了してしまいます。
ウォッチウィンドウで確認しましたら、Statusのところに
<BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。>
と表示されているのですが、どうしてでしょう?
フォームの画面では、確かに2つのパラメータで2件のデータが表示されています。
よろしくご教示お願いいたします。

Dim CN As ADODB.Connection
Dim CMD As New ADODB.Command
Dim RS As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset

  Set CN = CurrentProject.Connection

  Set rs2 = New ADODB.Recordset
  rs2.Open "出欠", CN, adOpenStatic, adLockOptimistic

  With CMD
    .ActiveConnection = CN
    .CommandText = "SELECT * FROM 名簿一覧 " _
           & "WHERE クラス ='" & Me.クラス選択 & "' " _
            & "AND 曜日='" & Me.曜日選択 & "'"
    .CommandType = adCmdText
    .Parameters(0) = Forms![出欠一覧]![クラス選択]
    .Parameters(1) = Forms![出欠一覧]![曜日選択]
    
  End With
  
  Set RS = CMD.Execute

  Do Until RS.EOF

    If RS!出欠 = -1 Then
      rs2!生徒番号 = RS!生徒番号
      rs2!氏名 = rs!氏名
      rs2!クラス = rs!クラス
      rs2!曜日 = rs!曜日
      rs2!出席日 = Date
      rs2!出欠 = -1

    Else
      rs2!生徒番号 = RS!生徒番号
      rs2!氏名 = rs!氏名
      rs2!クラス = rs!クラス
      rs2!曜日 = rs!曜日
      rs2!出席日 = Null
      rs2!出欠 = 1
    End If

    RS.MoveNext
  Loop
・ツリー全体表示

【9560】Re:他のプロシジャーの呼び出し
お礼    - 07/6/11(月) 14:44 -

引用なし
パスワード
   ▼Gin_II さん:
 有難うございます。
>IsLoaded プロパティ
 こう言う方法があったんですね。勉強になりました。
 >Forms!フォーム名!コントロール名
>で参照することができます。

 お陰で上手く出来ました。有難うございました。
・ツリー全体表示

【9559】Re:フォームでの抽出データをテーブルに出...
回答  小僧  - 07/6/10(日) 22:44 -

引用なし
パスワード
   ▼メイ子 さん:
こんばんは。


> ちなみに名簿一覧はフォームのテキストボックスから
> 抽出条件を設定しているクエリーです。

このクエリをそのまま使うとなると
ADODB.Command オブジェクトを使い
パラメータを指定してからレコードセットを開く事になると思います。


Dim CN As ADODB.Connection
Dim CMD As New ADODB.Command
Dim RS As New ADODB.Recordset
 
  Set CN = CurrentProject.Connection

  With CMD
    .ActiveConnection = CN
    .CommandText = "SELECT * FROM 名簿一覧 " _
           & "WHERE クラス ='" & Me.クラス選択 & "' " _
            & "AND 曜日='" & Me.曜日選択 & "'"
    .CommandType = adCmdText
    .Parameters(0) = Forms![フォーム名]![コントロール名]
  End With
    
  Set RS = CMD.Execute

  Do Until RS.EOF




クエリ:名簿一覧にいくつパラメータがあるのかが解りませんが、
上記の様にパラメータをセットしてから開けば
お望みのような操作ができるかと思われます。
・ツリー全体表示

【9558】Re:フォームに自動的に採番をしたいのです...
お礼  大河原  - 07/6/10(日) 20:48 -

引用なし
パスワード
   hatenaさん ありがとうございました。
成功しました。
先程は単純なミス(SELECT *,)を見過ごしてしまい申し訳ありませんでした。
今後はもっと慎重に、真剣に取り組みます。

私、大河原は吉村,山岸などと開発に携わっていますが今後も幼稚な質問
をする事になると思いますが、何卒よろしくお願いします。

勉強不足を痛感しています。
ありがとうございました。
・ツリー全体表示

【9557】Re:フォームに自動的に採番をしたいのです...
お礼  大河原  - 07/6/10(日) 20:45 -

引用なし
パスワード
   kohjiさん ありがとうございました。
やっと実現できました。
今回は「hatena」さんの「答」を参考にさせてもらいました。
しかし「kohji」さんの答えは、とても参考になりました。
今後は、構文をよく理解した上で必要な時に参考にさせていただきます。
私、大河原は吉村,山岸などと開発に携わっておりますが今後も幼稚な
質問をする事になると思いますが、何卒よろしくお願いします。
・ツリー全体表示

【9556】フォームでの抽出データをテーブルに出力
質問  メイ子  - 07/6/10(日) 18:22 -

引用なし
パスワード
   こんにちは、メイ子と申します。
あちこち探して、下記のようなコードを作りましたが、
「1つ以上の必要なパラメータの値が設定されていません」とエラーが出ます。
どなたがご教示お願いいたします。
ちなみに名簿一覧はフォームのテキストボックスから抽出条件を設定しているクエリーです。

  Dim CN As ADODB.Connection
  Dim rs As ADODB.Recordset
  Dim rs2 As ADODB.Recordset
  Dim SQL As String
 
  Set CN = CurrentProject.Connection
  
  Set rs = New ADODB.Recordset
  SQL = "SELECT * FROM 名簿一覧 WHERE クラス ='" & Me.クラス選択 & "'and 曜日='" & Me.曜日選択 & "'"
  rs.Open SQL, CN, adOpenKeyset, adLockOptimistic
    
  Do Until rs.EOF

    If rs!出欠 = -1 Then
      rs2!生徒番号 = rs!生徒番号
      rs2!氏名 = rs!氏名
      rs2!クラス = rs!クラス
      rs2!曜日 = rs!曜日
      rs2!出席日 = Date
      rs2!出欠 = -1

    Else
      rs2!生徒番号 = rs!生徒番号
      rs2!氏名 = rs!氏名
      rs2!クラス = rs!クラス
      rs2!曜日 = rs!曜日
      rs2!出席日 = Null
      rs2!出欠 = 1
    End If

    rs.MoveNext
  Loop
・ツリー全体表示

【9555】Re:フォームに自動的に採番をしたいのです...
回答  hatena  - 07/6/10(日) 17:15 -

引用なし
パスワード
   >【クエリの構文】です。
>SELECT *
    ^^
* の後にカンマ区切りが必要です。

>DCount("*", "tacifimport",
>"kaisyameikana<'" & [kaisyameikana] & "' OR (kaisyameikana='" & [kaisyameikana] &
>"' AND seqno<=" & [seqno] & ")")
>AS seqno
>FROM tacifimport
>ORDER BY tacifimport.kaisyameikana;
・ツリー全体表示

【9554】Re:DSUM関数の日ごと、商品ごとの集計
お礼  miyake  - 07/6/10(日) 16:09 -

引用なし
パスワード
   小僧 さん、hatenaさん、ありがとうございます。
小僧さんのご指摘により、問題がクリアしました。
すばらしい!
またよろしくお願いいたします。
・ツリー全体表示

【9553】Re:DSUM関数の日ごと、商品ごとの集計
回答  小僧  - 07/6/10(日) 15:14 -

引用なし
パスワード
   ▼miyake さん、hatena さん
こんにちは。

>金額の累計: DSum("金額","商品売上テーブル",
"売上日 < #" & [売上日] & "# OR (売上日=#" & [売上日] & "# AND 商品名<='" & [商品名] & "')")


なんか微妙に違ってますね…。

金額の累計: DSum("金額","商品売上テーブル",
"商品名='" & [商品名] & "' AND 売上日 <=#" & [売上日] & "#")

こんな感じでしょうか。


ご提示頂いたデータにはありませんが、

2007/05/01 ビデオ 100000
2007/05/01 ビデオ  50000

のように同日で同じ商品の売上が記載される可能性はありませんか?

もし、商品売上テーブルに主キーがないのでしたら
上記可能性がないのでしたら売上日、商品名を複合の主キーに
また重複する可能性がある場合は適当にオートナンバー型のフィールドを
追加して、そのフィールドを主キーにした方が良いかと思われます。


また商品名フィールドも商品コードをつけて
マスタ管理された方が良いかもしれませんね。
・ツリー全体表示

【9552】Re:フォームに自動的に採番をしたいのです...
質問  大河原  - 07/6/10(日) 14:08 -

引用なし
パスワード
   すみません。
どうしてもわかりませんので、再度質問をさせて下さい。
下記のように、クエリを作成しました。

【クエリの構文】です。
SELECT *
DCount("*", "tacifimport",
"kaisyameikana<'" & [kaisyameikana] & "' OR (kaisyameikana='" & [kaisyameikana] &
"' AND seqno<=" & [seqno] & ")")
AS seqno
FROM tacifimport
ORDER BY tacifimport.kaisyameikana;


【エラーメッセージ】です。
クエリ式'*
DCount("*", "tacifimport",
"kaisyameikana<'" & [kaisyameikana] & "' OR (kaisyameikana='" & [kaisyameikana] &
"' AND seqno<=" & [seqno] & ")")の構文エラー:演算子がありません。

【ヘルプ】の内容です。
クエリ式 '<式>' の <メッセージ> (Error 3075)
メッセージで示された理由のため、入力した式は無効です。フィールド名と区切り記号を正しく
入力したかどうかを確認してから、もう一度実行してください。

*1:フィールド名は確認しました。
*2:区切り記号の位置をいろいろ試しましたが、どうしても解決できません。

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

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