Access VBA質問箱 IV

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

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


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

【8718】Re:インポート(超初心者です)
発言  まさ7251  - 06/10/20(金) 23:03 -

引用なし
パスワード
   >エクスポート処理を自動化したいと思っています。
>取り込み元のtxtファイルは5フィールドあり、
>3フィールドがスペース区切り、2フィールドが
>カンマ区切りになっております。

>フィールド名を、各test1,test2,test3,test4,test5
>とし、日付、時刻、文字列、文字列、文字列として
>正確にインポートするためには、どのようにすれば
>良いでしょうか?

TransferText では無理だと思います。
手作業でインポートを実行しようとしても、区切り文字を
2種類も指定することは出来ませんし。

テキストファイルとして開き、1行ずつ読み込み、
スペース区切りおよびカンマ区切りで分割し、
テーブルへ追加してみてはどうでしょうか。
テーブルはあらかじめ用意していたほうがやりやすいです。
・ツリー全体表示

【8717】Re:パラメータクエリ
お礼  ワルツ  - 06/10/20(金) 17:59 -

引用なし
パスワード
   ご回答ありがとうございます。

>・Like演算子を使用すれば出来るかと思います。

へー、こんなことできるのですか。


>・あるいは、SQL文を全て書き換えるとかでも出来ると思います。
> 例えば、
> CurrentDb.QueryDefs("クエリ名").SQL = "Select * from AAA"

あ、これも知りませんでした。
ただ、これですと、逆にクエリオブジェクトにこだわる必要もないですね。
SQL文を文字列で作成してそのままやるのと同等ですね。
ただ、こちらのほうが楽そうなのでこの方式を使用してみます。

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

【8716】Re:特定桁の文字を抽出するには
回答  まさ7251  - 06/10/20(金) 17:03 -

引用なし
パスワード
   >コマンドボタンを押した時に4桁目が"x"と"-"でそれぞれ別の処理を行いたい
>のですが、4桁目の文字の抽出方法が分かりません。

Mid関数を使えば出来ます。

Mid(項目名,4,1)
・ツリー全体表示

【8715】特定桁の文字を抽出するには
質問  学習中  - 06/10/20(金) 16:08 -

引用なし
パスワード
   あるフィールドの4桁目の文字を拾って、処理を決定したいと思ってます。
フィールドAには"xxxxxxxxxxxxx"または"xxx-xxxx-xxxx"の文字(半角数字)が
入力されます。
コマンドボタンを押した時に4桁目が"x"と"-"でそれぞれ別の処理を行いたい
のですが、4桁目の文字の抽出方法が分かりません。
どなたかご教授よろしくお願いします。
・ツリー全体表示

【8714】インポート(超初心者です)
質問  とくなが  - 06/10/20(金) 14:54 -

引用なし
パスワード
   AccessVBAを初めて使っています。
宜しくお願いします。

エクスポート処理を自動化したいと思っています。
取り込み元のtxtファイルは5フィールドあり、
3フィールドがスペース区切り、2フィールドが
カンマ区切りになっております。

過去ログを参考に以下のコードを使いましたが、
フィールドは3つになり、文字列は指数表示に
なってしまいました。

Sub インポート()

Dim FName As String     '対象テキストファイルのフルパス
Dim TName As String     '取り込み先のテーブル名


  FName = "C:test\Inport.txt"
  TName = "test"


  DoCmd.TransferText acImportDelim, "", TName, FName, True
 
  
End Sub

フィールド名を、各test1,test2,test3,test4,test5
とし、日付、時刻、文字列、文字列、文字列として
正確にインポートするためには、どのようにすれば
良いでしょうか?
・ツリー全体表示

【8713】Re:フィールド名をデータとして・・
お礼  あおぎん  - 06/10/20(金) 14:52 -

引用なし
パスワード
   ▼まさ7251 さん:
こんにちは。
お返事ありがとうございます。

>例えば、以下のようなUNIONクエリをつくり、
>  SELECT 名前,"学期1",学期1 FROM T_給付内容
>  UNION ALL
>  SELECT 名前,"入学",入学 FROM T_給付内容
>  UNION ALL
>  SELECT 名前,"通学",通学 FROM T_給付内容
>それを元に、T_給付実績への追加クエリを実行すればどうでしょうか。

ご提示の方法でできました。
ありがとうございました。


>”フォームで追加したいフィールドを選んで”ということなら、
>上記のようなUNIONクエリからT_給与実績へ追加するクエリを
>フォームで選択した条件から生成し、実行すれば出来ると思います。
>VBA必須になりますので、ある程度の知識は必要かと思います。

VBAの知識に乏しいので、
とりあえずフォームにオプションボタンを項目数ほど作って、
チェックが入ったら項目名を表示するテキストボックスを同様に作って
それを追加クエリの抽出条件にして実行してみたら
なんとか自分の思うようなデータが追加できました。

また勉強して、VBAで実行できるようにしたいと思います。

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

【8712】Re:リストボックスの書式設定
お礼  メイ子  - 06/10/20(金) 14:51 -

引用なし
パスワード
   まさ7251さん、ご回答ありがとうございました。

>> Dim aaa As String
>
>パブリック変数で宣言したものを、なぜココでも宣言するのでしょうか?

そうでした^^;

>>    With Me.担当者.FormatConditions
>>    .Delete
>>       With .Add(acExpression, , "担当者 In(" & aaa & ")")
>
>こちらで前の2文字を除外するように記述すれば良いかと思います。

With .Add(acExpression, , "顧客名 In(" & Mid(aaa, 3) & ")")
としたら、できました。本当に助かりました。ありがとうございました。
エラー処理のところを考えてみます。
またわからなくなったらお願いいたします。
・ツリー全体表示

【8711】Re:レポートプレビューには表示されないが...
回答  たん  - 06/10/20(金) 13:10 -

引用なし
パスワード
   >If 【条件】 Then

こことあとは、関連する部分に、ブレークポイントを設定した上で
レポート印刷を実行してみれば、何か情報を得れると思います。
・ツリー全体表示

【8710】Re:リストボックスの書式設定
発言  まさ7251  - 06/10/20(金) 12:10 -

引用なし
パスワード
   >標準モジュールを1つ作り、下記のように記述しました。
>Public aaa As String
>
>>条件式は、”担当者='aaa' or 担当者='bbb'”とするより、
>>”担当者 In ('aaa','bbb')”のようにするほうがすっきりするかと思います。
>下記のように条件欄を変え、deleteは残して、public変数を参照するようにしてみましたが、一瞬上手く行ったかのように見えたのですが、やはり複数条件になりません。
>
>Private Sub 担当者_Click()
>
>   Me!詳細.Requery
>
> Dim aaa As String

パブリック変数で宣言したものを、なぜココでも宣言するのでしょうか?

>   aaa = aaa & ", '" & Me.担当者 & "'"
>   aaa = Mid(aaa, 3)

この部分を2回通るとどうなるかわかりますか?
最初の1回は、前の2文字が不要だから良いですが、
2回目には、更に前の2文字が消えてしまいますよ。
ココでは、前の2文字を消すということはせずに、

>    With Me.担当者.FormatConditions
>    .Delete
>       With .Add(acExpression, , "担当者 In(" & aaa & ")")

こちらで前の2文字を除外するように記述すれば良いかと思います。
・ツリー全体表示

【8709】レポートプレビューには表示されないが、...
質問  ハヌマーン  - 06/10/20(金) 11:52 -

引用なし
パスワード
   レポートで困っています。

Accessでラベルを作成しているのですが、データによっては必要ない項目などもありますので、

========================================
★詳細フォーマット時に実行しています。

If 【条件】 Then
テキスト1.Visible = False
ラベル2.Visible = False
Else
テキスト1.Visible = True
ラベル2.Visible = False
End If
========================================
といった具合にしています。

ただ、プレビューを見ている限りではうまく消えているのですが、
印刷時には表示されてしまいます。

もしかするとものすごく根本的なところで間違っているのかもしれ
ませんが、どなたか教えて下さい。
・ツリー全体表示

【8708】Re:リストボックスの書式設定
質問  メイ子  - 06/10/20(金) 11:10 -

引用なし
パスワード
   まさ7251 さん、お教えいただいてありがとうございます。

>サブルーチン内で宣言している変数は、サブルーチン内でのみ有効です。
>よって、aaaは、担当者をクリックするたびにクリアされます。
>サブルーチンの外に出せば、このフォーム内で有効になります。

標準モジュールを1つ作り、下記のように記述しました。
Public aaa As String

>条件式は、”担当者='aaa' or 担当者='bbb'”とするより、
>”担当者 In ('aaa','bbb')”のようにするほうがすっきりするかと思います。
下記のように条件欄を変え、deleteは残して、public変数を参照するようにしてみましたが、一瞬上手く行ったかのように見えたのですが、やはり複数条件になりません。

Private Sub 担当者_Click()

   Me!詳細.Requery

 Dim aaa As String

   aaa = aaa & ", '" & Me.担当者 & "'"
   aaa = Mid(aaa, 3)
 
    With Me.担当者.FormatConditions
    .Delete
       With .Add(acExpression, , "担当者 In(" & aaa & ")")
       .BackColor = 16764057
       .FontBold = True
       End With
    End With
  
End Sub

>ちなみに、クリック時に追加していくだけでは、
>当然、同じ担当者を何度もクリックすると、何個も条件に入ってしまいますし、
>間違って選んだ際にやり直しすることも出来ませんが、
>その辺は、問題ないのでしょうか。

アドバイスありがとうございます。初心者ですので、そこまで気が回りませんでした。
どう記述したらよいか考えるのに時間がかかりそうですので、まずは最低限の処理をなんとかしたいと思います。
ご指導よろしくお願いいたします。
・ツリー全体表示

【8707】Re:リストボックスの書式設定
回答  まさ7251  - 06/10/19(木) 23:54 -

引用なし
パスワード
   >「.delete」をつけたまま、なんとかaaaの中に書式条件を足していきたいのですが、
> うまく行きません。どなたかご指導お願いいたします。

サブルーチン内で宣言している変数は、サブルーチン内でのみ有効です。
よって、aaaは、担当者をクリックするたびにクリアされます。
サブルーチンの外に出せば、このフォーム内で有効になります。

条件式は、”担当者='aaa' or 担当者='bbb'”とするより、
”担当者 In ('aaa','bbb')”のようにするほうがすっきりするかと思います。

ちなみに、クリック時に追加していくだけでは、
当然、同じ担当者を何度もクリックすると、何個も条件に入ってしまいますし、
間違って選んだ際にやり直しすることも出来ませんが、
その辺は、問題ないのでしょうか。
・ツリー全体表示

【8706】Re:パラメータクエリ
発言  まさ7251  - 06/10/19(木) 23:27 -

引用なし
パスワード
   >今度、仕様変更により、日付が未入力の場合は、全データを対象としたい
>ということになりました。
>
>ex2)SQLのイメージ
> 1.日付を指定した場合:Select * from AAA where 日付=[パラメータ]
> 2.日付を指定しない場合:Select * from AAA
>
>新規にそれようにクエリを作成すればできますが、
>既存のクエリの改造だけでなんとかする方法はありませんか?

・Like演算子を使用すれば出来るかと思います。

・あるいは、SQL文を全て書き換えるとかでも出来ると思います。
 例えば、
 CurrentDb.QueryDefs("クエリ名").SQL = "Select * from AAA"
・ツリー全体表示

【8705】Re:フィールド名をデータとして・・
回答  まさ7251  - 06/10/19(木) 23:22 -

引用なし
パスワード
   >T_給付内容にある
>名前     学期1   学期2   学期3  入学  通学
>Aさん   \10,000  \10,000 \10,000 \20,000 \2,000
>Bさん    \8,000   \8,000  \8,000 \16,000 \2,000
>
>というデータを、T_給付実績に次のような形で追加したいのです。欲を言えばフォームで追加したいフィールドを選んで(ここでは学期1 入学 通学)追加クエリで実行できたらと思っているのですが・・。
>
>T_給付実績
>名前  項目  金額  
>Aさん 学期1 \10,000 
>Aさん 入学  \20,000 
>Aさん 通学  \2,000 
>Bさん 学期1 \8,000 
>Bさん 入学  \16,000 
>Bさん 通学  \2,000 

例えば、以下のようなUNIONクエリをつくり、
  SELECT 名前,"学期1",学期1 FROM T_給付内容
  UNION ALL
  SELECT 名前,"入学",入学 FROM T_給付内容
  UNION ALL
  SELECT 名前,"通学",通学 FROM T_給付内容
それを元に、T_給付実績への追加クエリを実行すればどうでしょうか。

”フォームで追加したいフィールドを選んで”ということなら、
上記のようなUNIONクエリからT_給与実績へ追加するクエリを
フォームで選択した条件から生成し、実行すれば出来ると思います。
VBA必須になりますので、ある程度の知識は必要かと思います。
・ツリー全体表示

【8704】Re:「レコードが大きすぎます」のエラー
発言  まさ7251  - 06/10/19(木) 23:15 -

引用なし
パスワード
   >「フィールドを短くするか、不要なフィールドを削除
>するか、フィールドの一部を他のテーブルに移動し、
>テーブルを再定義して下さい。」とのことでした。
>つまり、フィールドを短くすることも、削除することも
>できなければ、テーブルをもうひとつ作って、そちらに
>Aテーブルでは収まりきらないフィールドを設ける方法
>しかないのでしょうか?

メッセージを見る限り、そうするしかないと思います。

>これらのフィールドは、可能であればひとつのレコードとして
>扱いたいし、ひとつのレポートとして使用することが目的です。
>何か名案があれば教えて下さい。

クエリで内部結合して使うでは、ダメなのでしょうか。
・ツリー全体表示

【8703】Re:フィールド名をデータとして・・
発言  あおぎん  - 06/10/19(木) 17:27 -

引用なし
パスワード
   忘れてました。

環境はwin2000 ac2000です。

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

【8702】フィールド名をデータとして・・
質問  あおぎん  - 06/10/19(木) 17:20 -

引用なし
パスワード
   いつもお世話になっています。

以前トピック8071で

T_給付内容
SEQ    名前    項目    金額      日付
1    Aさん    学期1_A   \10,000    2006/04/01
2    Bさん    学期1_A   \8,000     2006/04/02
3    Cさん    学期1_A   \12,000    2006/04/01
4    Aさん    学期1_B   \10,000    2006/06/01
5    Bさん    学期1_B   \8,000     2006/06/01
6    Cさん    学期1_B   \12,000    2006/06/01
7    Aさん    学期2    \20,000    2006/09/01
8    Bさん    学期2    \16,000    2006/09/01
9    Cさん    学期2    \24,000    2006/09/04

というデータを 日付(ここでは2006/4/1)で抽出し

名前  学期1_A_金額 学期1_ B _金額 学期2_金額
Aさん   \10,000    \10,000    \20,000
Bさん    \8,000     \8,000    \16,000

のように表示するクエリについて教えていただいたのですが、
今回これと逆に

T_給付内容にある
名前     学期1   学期2   学期3  入学  通学
Aさん   \10,000  \10,000 \10,000 \20,000 \2,000
Bさん    \8,000   \8,000  \8,000 \16,000 \2,000

というデータを、T_給付実績に次のような形で追加したいのです。欲を言えばフォームで追加したいフィールドを選んで(ここでは学期1 入学 通学)追加クエリで実行できたらと思っているのですが・・。

T_給付実績
名前  項目  金額  
Aさん 学期1 \10,000 
Aさん 入学  \20,000 
Aさん 通学  \2,000 
Bさん 学期1 \8,000 
Bさん 入学  \16,000 
Bさん 通学  \2,000 

そもそもフィールド名を項目のデータとして入力できるかで行き詰まっています。
その方法が分かればあとはなんとか出来そうな気がするのですが・・。
ヒントでもかまいません。
よろしくお願いいたします。
・ツリー全体表示

【8701】Re:リストボックスの書式設定
質問  メイ子  - 06/10/19(木) 16:11 -

引用なし
パスワード
   >リストボックスでは無理でしょう。
>サブフォームをリストボックスのように作れば出来ると思います。

作り直してみました。
メインフォームの中にサブフォームを二つ作り、サブ「一覧」のフィールド「担当者」をクリックしたときのイベントに下記のように記述しました。
クリックしたレコードすべてに色をつけていきたいので、「.delete」を消すと、
「実際の書式条件数の数より多い値が、書式条件数に設定されています。」
と表示されエラーになります。
「.delete」をつけたまま、なんとかaaaの中に書式条件を足していきたいのですが、うまく行きません。どなたかご指導お願いいたします。

Private Sub 担当者_Click()

   Me!詳細.Requery

 Dim aaa As String

   aaa = aaa & " or 担当者='" & Me.担当者 & "'"
   aaa = Mid(aaa, 9)
 
    With Me.担当者.FormatConditions
    .Delete ←削除
       With .Add(acExpression, , "担当者=" & aaa)
       .BackColor = 16764057
       .FontBold = True
       End With
    End With
  
  
End Sub
・ツリー全体表示

【8700】パラメータクエリ
質問  ワルツ  - 06/10/19(木) 13:30 -

引用なし
パスワード
   WinXP + Access2000です。

選択クエリ(パラメータあり)をあらかじめ作成しておいて、
VBAから、QueryDefを使用して、パラメータを設定して使用しています。

ex1)指定日付のデータを取得
Select * from AAA where 日付=[パラメータ] ・・・ こんな感じです。

今度、仕様変更により、日付が未入力の場合は、全データを対象としたい
ということになりました。

ex2)SQLのイメージ
 1.日付を指定した場合:Select * from AAA where 日付=[パラメータ]
 2.日付を指定しない場合:Select * from AAA

新規にそれようにクエリを作成すればできますが、
既存のクエリの改造だけでなんとかする方法はありませんか?
・ツリー全体表示

【8699】Re:バーコードを使用しての入力
お礼  Makiko  - 06/10/18(水) 15:13 -

引用なし
パスワード
   ▼まさ7251 さん:
>▼Makiko さん:
>>早急なご回答ありがとうございます。
>>私はACCESSは超初心者なものでいろいろわかりません。
>>
>>1 バーコードリーダーとのデータのやりとりの記述はどのように
>>  すればよろしいのでしょうか?
>
>バーコードとの接続方法やインターフェースなどで異なりますので、
>一概にどのように記述するかは返答しようがありません。
>キーボードインターフェースとかだと、キーボードから入力するのと
>同じ感覚で利用できます。
>
>>2 追加クエリ、更新クエリもよくわかりません。
>
>追加クエリ
> http://office.microsoft.com/ja-jp/assistance/HP051880831041.aspx
>更新クエリ
> http://office.microsoft.com/ja-jp/assistance/HP051880881041.aspx
>辺りで勉強してみてはどうでしょうか。
>あるいは、書籍等で詳しく解説されたものを元に勉強したほうがいいかと。
>
>>3 バーコードにはXX産しか情報が入っていません。
>>  カゴ番号はキーボードで5桁の数字を入力することを考えています。
>
>フォームを作って入力すれば良いのではないでしょうか。
>
>まずは、ご自分で色々試してみてはどうでしょうか。
>その上で、具体的に何がどのようにわからないのかを聞いたほうが良いですよ。
>”何もわからない”ということでは、このような文字だけの
>やり取りで進めるのには無理があります。
>
>あるいは、どこかでに有料依頼をするとか。

ご丁寧なご回答どうもありがとうございました。
試行錯誤しながらトライしてみますね。
わからないことはもう少し具体的に記述できるように勉強もします。
また、よろしくお願いいたします。
どうもありがとうございました。
・ツリー全体表示

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