Access VBA質問箱 IV

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

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


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

【6472】Re:フィールドの選択について
回答    - 05/10/13(木) 12:19 -

引用なし
パスワード
   フィールドのデータセットを保持するオブジェクトは無いと思われるので、
レコードセットのループ処理で指定したフィールドのコレクションを作成
するのが良いかと思います。
・ツリー全体表示

【6471】Re:時刻型を日付型に変更する方法を教えて...
お礼  t29x0479  - 05/10/13(木) 12:12 -

引用なし
パスワード
   ▼Gin_II さん:
>>「2005/09/01 15:00:11」という時刻のデータを「2005/09/01」と日付部分だけ抽出したいのですが、
>
>DateValue 関数を使ってみてください。
ありがとうございます。
うまくいきました。
いつも行き詰まったらこの掲示板にカキコするんですが、適切な回答がいつもすぐに返ってきてものすごく助かります。
ありがとうございました。
・ツリー全体表示

【6470】Re:時刻型を日付型に変更する方法を教えて...
回答  Gin_II  - 05/10/13(木) 12:06 -

引用なし
パスワード
   >「2005/09/01 15:00:11」という時刻のデータを「2005/09/01」と日付部分だけ抽出したいのですが、

DateValue 関数を使ってみてください。
・ツリー全体表示

【6469】Re:ではサンプルをまた一つ
回答  小僧  - 05/10/13(木) 12:00 -

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

>VBAで動的にSQL文の方法をお願いいたします。

これでは回答する方も回答しにくいですよ ^^;
動的にフィールドを選ぶ方法まで回答者に考えさせてはだめですよ。

今回はどのフィールドを選択するかをユーザがリストボックスから選んで
実行ボタンを押すとクエリが作成される例です。

適当なフォームを作成し、

リストボックス: lstフィールド名
コマンドボタン: クエリ作成

を配置して下さい。
lstフィールド名の方は複数選択を「標準」に設定して下さい。

まず、フォームの読み込み時のイベントに

Private Sub Form_Load()
'要参照 DAO x.x Object Library
Dim RS As DAO.Recordset
Dim i As Long

  Me.lstフィールド名.RowSourceType = "Value List"

  Set RS = CurrentDb.OpenRecordset("テーブル名", dbOpenSnapshot)
    For i = 0 To RS.Fields.Count - 1
      Me.lstフィールド名.AddItem RS(i).Name
    Next
  RS.Close: Set RS = Nothing

End Sub

のようにイベントを組み込みます。

これでフォームを開くと、リストボックスにフィールドの一覧が表示されると思います。


次にコマンドボタンのクリック時のイベントに

Private Sub クエリ作成_Click()
Dim varS As Variant
Dim strSQL As String
Dim QD As DAO.QueryDef

  If DCount("*", "MSysObjects", "Name = 'Q_Temp'") > 0 Then _
    DoCmd.DeleteObject acQuery, "Q_Temp"
  
  For Each varS In Me.lstフィールド名.ItemsSelected
    strSQL = strSQL & "," & Me.lstフィールド名.ItemData(varS) & " "
  Next
  
  strSQL = "SELECT " & MID(strSQL, 2) _
      & "FROM テーブル名"
  
  Set QD = CurrentDb.CreateQueryDef("Q_Temp", strSQL)
  QD.Close: Set QD = Nothing
End Sub

のように記述します。

リストボックスで選択したフィールドを持つクエリが作成されると思われます。
上記のコードで解らないことがありましたら遠慮なさらずに質問なさって下さいね。


※ あくまでも動的に SQL を作成する例なので Saiyamaさん のやりたい事と
  ずれているかもしれません。
・ツリー全体表示

【6468】時刻型を日付型に変更する方法を教えて下...
質問  t29x0479  - 05/10/13(木) 11:31 -

引用なし
パスワード
   「2005/09/01 15:00:11」という時刻のデータを「2005/09/01」と日付部分だけ抽出したいのですが、どういったSQLを書けばいいのでしょうか?
ご存じのかた教えて下さい。
・ツリー全体表示

【6467】Re:テキストボックスでの改行数の制限
お礼  Volley  - 05/10/13(木) 11:24 -

引用なし
パスワード
   こんにちは

回答ありがとうございます。
リンク先を参照させて頂きました。
APIはExcelで少しかじりましたんで、これから
内容を確認していきます。ありがとうございました。
・ツリー全体表示

【6466】Re:サンプルならネットに山のようにある
回答  たん  - 05/10/13(木) 10:41 -

引用なし
パスワード
   > VBAで動的にSQL文の方法をお願いいたします。

手法は提示しています。
ただ、上記がサンプルの提示を望んでいるのであれば、
私自身のスタンスとして、サンプル提示はしません。

# サンプルを作るということは、その人の仕事を肩代わりするのと
# 変わらないからです。

動的SQLの作成方法はネットに山のように転がっています。
(即レスで「お願いします」と言う前にまずは「調べる」べきでは?)

# その人向けに特化したサンプル作っても応用効かないだろうし。
・ツリー全体表示

【6465】Re:テキストボックスでの改行数の制限
回答  たん  - 05/10/13(木) 10:32 -

引用なし
パスワード
   >改行をしたときは良いのですが、改行しなくても
>自動的に2段目にカーソルがきて入力できます。
>この場合はどのように確認したらようのでしょうか?

つまりは横に日本語10文字しか入らない状態で、
10文字目で改行しないで11文字目を入れた場合に、
それを、10文字で1行、11文字目で1行と認識させ、
それの合計が10行を越えないようにしたいという話に
なるのでしょうか?
(21文字入れたら、3行と認識させる?という事?)

であれば、同じくAccessClubさんの過去ログより
http://www.accessclub.jp/bbs3/0117/superbeg41441.html

というのがあります。
(ただ、中身理解しないと何の意味も価値もありません。)
・ツリー全体表示

【6464】Re:レコードは削除されているエラー
発言  小僧  - 05/10/13(木) 10:01 -

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

>'**************************************************
>'WT_年度予算AへT_年度予算のデータ追加
>'**************************************************
>Do Until rs1.EOF
>…
>Loop
>
>'**************************************************
>'T_年度予算BへWT_年度予算のデータ追加
>'**************************************************
>
>rs2.MoveFirst
>
>Do Until rs2.EOF
> rs1.Find "年度CD='" & rs2!年度CD & "'"

「WT_年度予算AへT_年度予算のデータ追加」で
rs1 が「EOF」の位置になるまでループさせたまま

「T_年度予算BへWT_年度予算のデータ追加」において
そのまま Find メソッドを使っているからではないでしょうか。

rs1 もMoveFirst しても結果は変わりませんか?

外していたらすみません。
・ツリー全体表示

【6463】Re:フィールドの選択について
質問  Saiyama  - 05/10/13(木) 9:40 -

引用なし
パスワード
    ご回答いただき、ありがとうございます。
 今回の質問に関して、最初各検索条件に応じて、クエリを作成しましが、
やはり運用上では、約45種類の資材があるから、クエリで個々の対応方法を
止めざる得ない、この掲示版に投稿しました。
>というように条件に応じたクエリを個々で用意するか、
>VBAで動的にSQL文を生成し、クエリとして表示させるかのどちらかでしょう。
 VBAで動的にSQL文の方法をお願いいたします。
・ツリー全体表示

【6462】Re:テキストボックスでの改行数の制限
質問  Volley  - 05/10/13(木) 9:31 -

引用なし
パスワード
   ▼たん さん:
ご回答ありがとうございます。
もうひとつお聞きしたいのですが。
改行をしたときは良いのですが、改行しなくても
自動的に2段目にカーソルがきて入力できます。
この場合はどのように確認したらようのでしょうか?

例:
テキストボックスは10行までしか表示させていません
しかしデータ10行以降も入力できるので改行制限を設けたい
でも、改行しなくても入力可能なので最大10行までしか入力
出来ないようにしたいのです。
「改行+改行していない2行以上の入力データ行=10行」

「改行していない2行以上の入力データ行」の行の取得方法が
判りません。よろしくお願いします
・ツリー全体表示

【6461】Re:フィールドの選択について
回答  たん  - 05/10/13(木) 9:16 -

引用なし
パスワード
   > クエリの中、検索条件を付与すれば、検索条件に該当するレコードが選択される
>ことができます。ここでは、フィールドを選択することはかのうでしょうか?
>ぜひご伝授ください。
>イメージは以下のよう、
>
>例、部品コード、製造工程、資材4の場合は、
>部品コード 製造工程   資材4
>M4-AC    KA1     GB
>M5-DF     KA2     KG

というように条件に応じたクエリを個々で用意するか、
VBAで動的にSQL文を生成し、クエリとして表示させるかのどちらかでしょう。
・ツリー全体表示

【6460】フィールドの選択について
質問  Saiyama  - 05/10/12(水) 22:44 -

引用なし
パスワード
   こんばんは
 クエリの中、検索条件を付与すれば、検索条件に該当するレコードが選択される
ことができます。ここでは、フィールドを選択することはかのうでしょうか?
ぜひご伝授ください。
イメージは以下のよう、

テーブルA
部品コード 製造工程  資材1   資材2   資材3   資材4
M4-AC    KA1    A     AD     FG     GB
M5-DF    KA2     A     FD     FK     KG




選択項目:部品コード、製造工程(この二つのフィールドが必須)
     資材1〜資材4から一つを選べるようにしたい。

例、部品コード、製造工程、資材4の場合は、
部品コード 製造工程   資材4
M4-AC    KA1     GB
M5-DF     KA2     KG
・ツリー全体表示

【6459】Re:追記
発言  たん  - 05/10/12(水) 13:19 -

引用なし
パスワード
   >ACCESS開発者の殆どは子供かもしれませんよ。
>ここは子供が来てはいけないのでしょうか?

少なくとも、「ここが分からない」と自分の質問の中の
分からない部分を切り分け出来ないのなら、それは
こどもかどうかというより、単なる、質問者の怠慢でしょう。

# 少なくとも今の子供は「ここが分からない」を義務教育レベルでも
# 出来ますよ。

少なくとも、分からないのが「用語」なのか「使い方」なのか
「自分への応用」なのかを切り分けもしないで「分からない」と
いうのなら、そんな質問の仕方は一般社会でも通用しないと思うよ。

# 少なくともネット社会は文字でしか連絡を取れないのだから、
# 文字で如何に自分の考えをきちんと伝える事が出来るかが非常に
# 大事だ。それを怠るなら、こどもじゃなくてもダメだろう。
・ツリー全体表示

【6458】Re:テキストボックスでの改行数の制限
回答  たん  - 05/10/12(水) 13:12 -

引用なし
パスワード
   余所のリンク貼っても問題ないよね?>管理人さん

http://www.accessclub.jp/bbs3/0064/superbeg24259.html
・ツリー全体表示

【6457】Re:複数のテーブルに一度に列を追加するに...
お礼  にしもり  - 05/10/12(水) 13:05 -

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

どうもありがとうございました。
・ツリー全体表示

【6456】テキストボックスでの改行数の制限
質問  Volley  - 05/10/12(水) 12:35 -

引用なし
パスワード
   こんいちは

フォームでテキストボックスに値を入力しているのですが
改行(Enter)で出来るのですが、これを制御(改行は3回まで)
をしたいのですが方法が判りません。
アドバイスお願い致します。
一応、そのテキストボックスのフォーカスがなくなった時に
チェックしようと思っています。
・ツリー全体表示

【6455】レコードは削除されているエラー
質問  山田  - 05/10/12(水) 11:15 -

引用なし
パスワード
   winXP
Access2002なのですが rs1.Find "年度CD='" & rs2!年度CD & "'"
のところでレコードは削除されていますとメッセージが出てしまいます。
WT_年度予算Bにはレコードが追加できていてT_年度予算Bにレコードが追加できない状態です。わかる方がいらしたら宜しくお願いします。

Public Sub B_年度予算B_追加()
'**************************************************
'WT_年度予算Bに費目データを追加する
'**************************************************

Dim cn As ADODB.Connection
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Dim xSQL1 As String    'WT_年度予算Bを初期化
Dim xSQL2 As String    'T_年度予算Bの年度CD適正化

Set cn = CurrentProject.Connection
Set rs1 = New ADODB.Recordset
Set rs2 = New ADODB.Recordset

rs1.Open "T_年度予算B", cn, adopkeyset, adLockOptimistic
rs2.Open "WT_年度予算B", cn, adopkeyset, adLockOptimistic

xSQL1 = "Delete * from WT_年度予算B;"
DoCmd.RunSQL xSQL1

xSQL2 = "UPDATE T_年度予算B SET T_年度予算B.年度CD = [期] & [出張所CD] & [費目CD];"
DoCmd.RunSQL xSQL2

'**************************************************
'WT_年度予算AへT_年度予算のデータ追加
'**************************************************

rs1.MoveFirst

Do Until rs1.EOF
If Int(rs1!期) = Int(Forms!F_Main!期.Value) - 1 Then
 rs2.AddNew
   rs2![年度CD] = Int(Forms!F_Main!期.Value) & rs1![出張所CD] & rs1![費目CD]
   rs2![期] = Int(Forms!F_Main!期.Value)
   rs2![費目CD] = rs1![費目CD]
   rs2![出張所CD] = rs1![出張所CD]
 rs2.Update
End If
rs1.MoveNext
Loop

'**************************************************
'T_年度予算BへWT_年度予算のデータ追加
'**************************************************

rs2.MoveFirst

Do Until rs2.EOF
rs1.Find "年度CD='" & rs2!年度CD & "'"
If rs1.EOF Then
 rs1.AddNew
   rs1![年度CD] = rs2![年度CD]
   rs1![期] = rs2![期]
   rs1![費目CD] = rs2![費目CD]
   rs1![出張所CD] = rs2![出張所CD]
 rs1.Update
 
End If
rs2.MoveNext
Loop

rs1.Close
rs2.Close
cn.Close

End Sub
・ツリー全体表示

【6454】Re:複数のテーブルに一度に列を追加するに...
回答  Gin_II  - 05/10/12(水) 10:59 -

引用なし
パスワード
   >alter table ORG1 add column 10月累計 Integer
>alter table ORG2 add column 10月累計 Integer;
>
>ところがALETR TABLEのステートメントの構文エラーですと出ます。
>どこが違うかどなたかお教えください。

Access では、複数のSQL文はサポートされていませんので、ムリでしょう。
別々に実行するか、マクロのSQLの実行アクションあたりを使うとか検討してください。
・ツリー全体表示

【6453】Re:レポート(伝票印刷)
発言  ki  - 05/10/12(水) 10:08 -

引用なし
パスワード
   ▼ジュン さん:
こんにちは。
レポートのグループ化はどうなっていますか?
クエリーの並べ替えだけでは、レポートに反映されません。
また、ご質問の内容は、一般の解説書に載っている標準的なレポート
作成なので、そちらをご覧になるとよく理解できると思いますよ。

>印刷条件は以下の通りです。
> ヘッダー部: 日付・得意先CD・得意先名・・・
> 明細部  : 商品名・数量・単価・金額・・・
> フッター部: 納入場所・・・
>データ:クエリーで作成(得意先CD・納入場所順に並べ替え指定しています)
>質問点
> 得意先と納入場所が同一のデータは1枚の納品書に印刷する条件ですが、異なる得意先(又は納入場所)であっても1枚の伝票に印刷されます。得意先(又は納入場所)が異なれば改ページして印刷したいのです。
・ツリー全体表示

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