Access VBA質問箱 IV

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

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


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

【10625】クエリ条件抽出欄の増加
質問  AAA  - 08/10/22(水) 10:52 -

引用なし
パスワード
   クエリの条件抽出欄は9段しかなく、抽出条件がそ9段以上ある場合欄を増加させる事が出来るのでしょうか?

というのが、工事依頼書の履歴を取っているのですが、部品番号(主キー)の工程で判断して履歴を取っています。

例 ○○○○-△△-□□□ 1/1
  ○○○○-△○-□□□ 1/1
  ○○△○-△○-□□□ 1/1
一部までは番号が一緒で最後が違ったりとか、最初が違い後は一緒とか、中盤が違って前と後ろが同じだったり、そういった番号が似た部品が何十種類もありワイルドカードを使うと自分の欲しくないものまで出てきます(条件設定によるのですが)
部品番号を全て一致させてその部品番号だけのデータが欲しのですが、抽出条件に全ての番号を入れていると9段までしか入りませんでした。

抽出条件が増加できればと思うのですが、もしそれが出来なければ何かいい方法はないでしょうか?

VBAとは全く関係ない質問なのですが、分かる方がいらっしゃればよろしくお願いします。
・ツリー全体表示

【10624】Re:DISTINCTが作動しなくなりました。
発言  neptune  - 08/10/22(水) 9:56 -

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

知らなかったので調べてみました。

恐らくこれではないでしょうか?
「Access でクエリを実行するとエラー メッセージ "指定されたデータ量がフィールド サイズを超えています" が表示される」
ht tp://support.microsoft.com/default.aspx?scid=kb%3Bja%3B896950

//////////////原因の項より一部引用///////////////////
DISTINCT キーワードが指定されると、Access でレコード間の比較が実行されます。
Access で 2 つのメモ型フィールドの比較が実行されるときには、
フィールドは最大 255 文字のテキスト型フィールドとして扱われます。
/////////////////引用ここまで////////////////////////

私も知らなかったので為になりました。
・ツリー全体表示

【10623】DISTINCTが作動しなくなりました。
質問  nawa  - 08/10/21(火) 23:38 -

引用なし
パスワード
   更に関連してもうひとつ疑問があります。

DISTINCTするまえにUNIONクエリでテーブルをつなげています。
UNIONクエリをしたところまででは長文すべて表示していますが、
DISTINCTすると長文が255文字でできられてしまっています。

テーブルでそのフィールドはメモ型にしているのですが、
DISTINCTするとテキスト型に変換されてしまうのでしょうか?

あわせてお願いします。
・ツリー全体表示

【10622】DISTINCTが作動しなくなりました。
質問  nawa  - 08/10/21(火) 23:05 -

引用なし
パスワード
   何度も質問させていただき申し訳ありません。
よろしくお願いします。

今度はクエリで、DISTINCTについてです。

全フィールド同じ内容のものが多いため、
重複を削除する目的で使用しています。

今まで重複削除できていたのですが、
あるひとつのフィールドを追加すると機能しなくなります。

そのフィールドは文字数が長いのですが、DISTINCTが使えるのに
文字数の制限ってあるのでしょうか?
どうすれば、長い文章でもDISTINCTが使えるようになりますか?
よろしくお願いします。
 
・ツリー全体表示

【10621】Re:複数のキーワードで抽出する方法?
お礼  nawa  - 08/10/21(火) 22:41 -

引用なし
パスワード
   いろいろなHP勉強しました。
解決しました。
コマンドボタンを作成し、そこのイベントプロシージャに入力するんですね。
まだ、暗号の意味を理解はしていませんが、検索できてしまいました。
有難うございました。

今後も少しずつ理解できるよう努力したいです。

有難うございました。
・ツリー全体表示

【10620】Re:複数のキーワードで抽出する方法?
質問  nawa  - 08/10/21(火) 15:59 -

引用なし
パスワード
   ご返信有難うございました。
VBAが完全に初めてのことなので戸惑っています。
いろいろsplit関数でHP検索して勉強してみましたが、よくわかりませんでした。
ただ、フォームの中のコードビルダというところに記入するのだろうなとわかるようになりました。

また、一つ一つこの意味を理解しようとして努力中です。

Subという名のテキストボックス
   myKeyWord() を文字列と宣言します
   myWhereSTR を文字列と宣言します
  myLooP を長整数型と宣言します  
   myTesWrd を "りんご + みかん" と宣言します
   myKeyWordは、myTesWrdを+で分割したものです。
   myLooPは最小から最大まで行います。
  
とここまでは、本を見たりHP参考にして理解しました。
ここから先の意味が理解できませんでした。
どういう意味なのでしょうか?検索をかける対象はどこに記入すればいいのでしょうか?
つまり、このコードビルダをつかって、「データベースクエリ」のなかの「果物名フィールド」の中からフォームに入力した文字(例ではりんごとみかん)を抽出させるにはどうしたらいいのでしょうか?

Private Sub テキスト_click()
  Dim stDocname As String
  stDocname="検索"
  DoCmd.RunMacro stDocname

というようなものを入れないとだめなのでしょうか?

自分のようなド素人に教えるのは大変かとおもいますが、なにとぞよろしくお願いします。
・ツリー全体表示

【10619】Re:複数のキーワードで抽出する方法?
回答  トキドキ徹  - 08/10/21(火) 11:46 -

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

split関数を使えば、テキストデータを分割できます。

簡単な例です。
Private Sub sub_keyword()
  Dim myKeyWord() As String
  Dim myWhereSTR As String
  Dim myLooP As Long
  
  Const myTesWrd As String = "りんご + みかん"
  
  
  myKeyWord = Split(myTesWrd, "+", , vbTextCompare)
  
  For myLooP = LBound(myKeyWord) To UBound(myKeyWord)
    myWhereSTR = myWhereSTR & " or Like '" & Trim(myKeyWord(myLooP)) & "*'"
  Next myLooP
  
  myWhereSTR = Mid$(myWhereSTR, 5)
  
  Debug.Print myWhereSTR
End Sub

"+" の部分を "or" に換えても良いですし、スペースも使用可能です。
ただし、"+"(または"or")の文字の検索は出来ません。

参考までに。
・ツリー全体表示

【10618】複数のキーワードで抽出する方法?
質問  nawa  - 08/10/20(月) 23:50 -

引用なし
パスワード
   続けての書き込みになってしまいますが、お許しください。
抽出クエリでデータの抽出をしています。

Like[Forms]![検索フォーム][キーワード1]&"*" or Like[Forms]![検索フォーム][キーワード2]&"*"
というように、検索フォームの中に複数のテキストボックスを作成すればできることはわかったのですが、

ひとつのテキストボックスで複数の検索をかけたいのですが、どのようにすればいいのでしょうか?
たとえば、

キーワード1=りんご  キーワード2=みかん  で抽出するところを
キーワード=りんご + みかん 
キーワード=りんご or みかん  と入力して抽出したいのです。

ご教授ください。よろしくお願いします。
・ツリー全体表示

【10617】Re:抽出クエリで選択したものを人が判断...
回答  nawa  - 08/10/20(月) 23:23 -

引用なし
パスワード
   ご丁寧に有難うございます。
うまく説明できませんでしたので、例ではなく、実際のテーブルで説明させてください。

薬品名     規格    コード
アクトス錠   15mg    1234567J1234
アクトス錠   30mg    1234567J1235
アムロジン錠  2.5mg    1234568J1111
アムロジン錠  5mg     1234568J1112
ベイスン錠   0.2mg    1235555J4321
ベイスン錠   0.3mg    1235555J4322

というように薬のテーブルがあります。

抽出クエリの抽出条件は以下のようになっており、薬品名で検索をかけれるようにしました。
Like[Forms][検索フォーム]![薬品名]&"*"

ここで、薬品名="アクトス"と検索をかけると
薬品名     規格    コード
アクトス錠   15mg    1234567J1234
アクトス錠   30mg    1234567J1235
と抽出されます。

このとき、今回は15mgの薬を使ったから
1234567J1234 こっちのコードを表示する

またあるときは、30mgの薬を使ったから
1234567J1235 こっちのコードを表示する

としたいわけです。

なので普段使う条件は、
薬品名は、薬15000品目くらいあり、
薬の規格(mg数)はここの薬によってまちまちです。
なので、パターンが無数になってしまう気がしています。

この説明で伝わりましたでしょうか?
説明が下手で申し訳ありませんが、よろしくお願いします。
・ツリー全体表示

【10616】Re:抽出クエリで選択したものを人が判断...
質問  Gin_II  - 08/10/20(月) 22:12 -

引用なし
パスワード
   > 果物の名称は15000程度あります。
> 個数も例では「1」「10」ですが、さまざまあります。
> 果物の名称での抽出を頻回にします。
> でてきたものを、毎回違う個数で選択したいと思います。

果物の名称・個数の複数条件(And・Orは固定)で抽出するのであれば、それほど
難しくはありません。
そのつど、Or・And を使い分けたり、条件に括弧をつけたりするのであれば、
ちょっぴり難易度はあがると思います。

普段使うような条件は、どういったものがあるのでしょうか?

> 名称 = "桃" Or 名称 = "梨"

> (名称 = "桃" Or 名称 = "梨")
> And
> (個数 = "10個" Or 個数 = "1個")

こういった記述で、パターンを洗い出してもらえれば、どういった仕組みが
考えられるかを提示することはできると思います。

また、そういったパターンがあれば、条件入力用のコントロールとして、
どういったものが必要なのかも考えることができます。
・ツリー全体表示

【10614】Re:抽出クエリで選択したものを人が判断...
質問  nawa  - 08/10/19(日) 20:45 -

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

果物の名称は15000程度あります。
個数も例では「1」「10」ですが、さまざまあります。
果物の名称での抽出を頻回にします。
でてきたものを、毎回違う個数で選択したいと思います。

一筋縄ではいかないのでしょうか?
・ツリー全体表示

【10613】Re:文字列型が通貨型になってしまう
発言  まさお E-MAIL  - 08/10/19(日) 15:22 -

引用なし
パスワード
   ▼Gin_II さん:
ご回答ありがとうございます。明日、早朝に職場に行って確認しようと思います。
・ツリー全体表示

【10612】Re:抽出クエリで選択したものを人が判断...
発言  Gin_II  - 08/10/18(土) 23:04 -

引用なし
パスワード
   区分 名称 個数 金額
果物 柿 1個   100円

果物 柿 10個  800円

果物 桃 1個   300円

果物 桃 10個  2500円

果物 梨 1個   200円

果物 梨 10個  1800円

この抽出条件として、

名称 = "桃" Or 名称 = "梨"

ですよね?

で、

区分 名称 個数 金額
果物 桃 10個  2500円

果物 梨 1個   200円

元の内容から、この結果にするには、

(名称 = "桃" Or 名称 = "梨")
And
(個数 = "10個" Or 個数 = "1個")

のような条件になりますね。
今回の場合だけを考えれば、フォームで入力する抽出条件を必要なだけ(名称×2、個数×2)作成して、
フォームの Filter プロパティを使って抽出するようにしておけばいいとは思います。

ただ、ほかの条件もあるのであれば、上記の作り込みをすると、応用がきかないですね。


> この時チェックボックスのようなもので、果物の種類ごとに

> どちらかを任意に選びたい

実際に、元のテーブルに、Yes/No 型のフィールドを追加しては?
少なくとも、テーブルに一意となる項目がないと、汎用性があるような抽出の仕組みを作ることは難しいですね。
・ツリー全体表示

【10611】Re:文字列型が通貨型になってしまう
回答  Gin_II  - 08/10/18(土) 21:55 -

引用なし
パスワード
   > 問題点:

> 入力されるファイルのセルに文字列型を意図して「S50」などと、最初にSをつけて
> 入力したのですが、出力されたファイルには「¥50」と出力されてしまいます。

新規Excelファイルを作成して、

(1) 各列単位に、セルの書式設定をしてください。
 上記の列は、「文字列」に。

(2) 既存のインポートするファイルから、コピーをして、(1) で作成したファイルに
 「値のみコピー」。

(3) 上記ファイルを新規テーブルとしてインポート。

で、きちんとテキスト型としてインポートされませんか?
・ツリー全体表示

【10610】抽出クエリで選択したものを人が判断して...
質問  nawa  - 08/10/18(土) 21:30 -

引用なし
パスワード
   初めて書き込みさせていただいております。
よろしくお願いします。

以下のような選択クエリがあり、フォームから果物の種類で
抽出できるようになっています。

果物 柿 1個   100円
果物 柿 10個  800円
果物 桃 1個   300円
果物 桃 10個  2500円
果物 梨 1個   200円
果物 梨 10個  1800円
      

今回フォームに「桃」「梨」と入力し、抽出して

果物 桃 1個   300円
果物 桃 10個  2500円
果物 梨 1個   200円
果物 梨 10個  1800円

という結果を得たとします。
この時チェックボックスのようなもので、果物の種類ごとに
どちらかを任意に選びたい
と考えています。

たとえば今回は、桃は「10個」梨は「1個」を選ぶと決めます。
そのときに

果物 桃 10個  2500円
果物 梨 1個   200円

と表示させたいのですが、
抽出したもののなかから、更に選んで抽出するには、どのようにすればいいのでしょうか?

教えて頂けると幸いです。
よろしくお願いします。
・ツリー全体表示

【10609】Re:MSysCompactErrorについて
発言  neptune  - 08/10/18(土) 16:20 -

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

知らなかったのでググって見ました。多分これですね。
ht tp://office.microsoft.com/ja-jp/access/HA010506481041.aspx

壊れかかっているかも?
・ツリー全体表示

【10608】文字列型が通貨型になってしまう
質問  まさお E-MAIL  - 08/10/18(土) 0:15 -

引用なし
パスワード
   2つのエクセルファイルをインポートしてクエリを実行して二つのファイルを比較した後、結果をエクセルファイルにエクスポートするプログラムを作りました。

問題点:
入力されるファイルのセルに文字列型を意図して「S50」などと、最初にSをつけて入力したのですが、出力されたファイルには「¥50」と出力されてしまいます。

これはACCESSに読み込んだ際に通貨型になってしまったのだと思います。

解決策としてはインポートした直後にそのテーブルをコピーし、全フィールドを文字列型に変換し、出力される直前に全フィールドを本来の型に戻して出力しようと考えていますが、いまいち方法がわかりません。

本来のフィールドの型とフィールド数を取得、最後にfor文を用いて元に戻そうと考えていますが、型の取得、最後に型の変換を実現する方法がわかりません。

また、もっと良い方法があればご教授お願いします。
・ツリー全体表示

【10607】ファイル入出力のない場合の処理概要図の...
質問  moko  - 08/10/17(金) 17:20 -

引用なし
パスワード
   初めての仕様書を作成しています。
フォーム別に処理概要図を書く部分があり、
単純な入出力の処理の絵なら書けるのですが
(例: 入力テーブル"T_INPUT"→ 処理名"F_SYORI" →出力テーブル"T_OUTPUT")
たとえば下記の2つのような場合、どうしたらいいかわかりません。
表現方法があるのかどうかもわかりませんが
一般的にどうするのか
どなたかアドバイスをお願いします。

1.ログイン画面(F_LOGIN)
入力項目は「社員番号」「パスワード」
処理内容は
・社員番号マスタ("M_SYAINNO"でパスワード認証
・制御フラグ("T_CONTOL"より取得)でログイン時の処理内容を決める。制御フラグが1の場合に"ファイルA"を"TBL_A"に取り込む

2.更新画面(F_KOUSIN)
あるテーブル"T_HYOUJI"をサブフォームに表示し
画面上で更新する。その結果を別テーブル"T_KOUSINSAKI"に更新する
・ツリー全体表示

【10606】追加クエリ
質問  tyuyo  - 08/10/17(金) 16:54 -

引用なし
パスワード
   Windows XP
Access 2003

初心者・長文ですが、ご教授お願いします。

追加クエリで、新規登録または更新をした時に
その1件のみを違うテーブルに追加保存したいのですが
何かいい方法はありますでしょうか?

やりたい事は以下の通りです。

テーブルA(管理表)
商品名 商品番号 保管場所 在庫
靴下A  A01    棚A-1   10足
靴下B  B01    棚B-1   10足
靴下C  C01    棚C-1   10足

テーブルB(履歴表)
商品名 商品番号 保管場所 在庫
靴下A  A01    棚A-1   10足
靴下B  B01    棚B-1   10足
靴下C  C01    棚C-1   10足

と、同じテーブルが2つあります。
テーブルA(管理表)を使って商品の管理をしており、
テーブルA内にはコマンドボタンで"新規登録"と"検索"と"更新"があります。

"新規登録"をすると、それぞれのフィールドに入力できるようになっており、
例えば・・・
商品名 商品番号 保管場所 在庫
靴下D  D01    棚D-1   20足

を新規登録すると、テーブルAには

テーブルA(管理表)
商品名 商品番号 保管場所 在庫
靴下A  A01    棚A-1   10足
靴下B  B01    棚B-1   10足
靴下C  C01    棚C-1   10足
靴下D  D01    棚D-1   20足

と、なるのですが、テーブルB(履歴表)の方にも同じようにしたいのと、
商品の更新をする際に"検索"ボタンで商品を検索(1つの商品しか表示されない)。
変更が終わったら"更新"ボタンで、テーブルAには上書き保存、
テーブルBには追加保存としたいのですが・・・

例えば・・・
テーブルA(管理表)
商品名 商品番号 保管場所 在庫
靴下A  A01    棚A-1   10足
靴下B  B01    棚B-1   10足
靴下C  C01    棚C-1   10足
靴下D  D01    棚D-1   20足

商品名:靴下Bを検索

テーブルA(管理表)
商品名 商品番号 保管場所 在庫
靴下B  B01    棚B-1   10足

となり、在庫:10足を5足に変更し更新

テーブルA(管理表)
商品名 商品番号 保管場所 在庫
靴下A  A01    棚A-1   10足
靴下B  B01    棚B-1   5足
靴下C  C01    棚C-1   10足
靴下D  D01    棚D-1   20足

テーブルB(履歴表)
商品名 商品番号 保管場所 在庫
靴下A  A01    棚A-1   10足
靴下B  B01    棚B-1   10足
靴下C  C01    棚C-1   10足
靴下D  D01    棚D-1   20足
靴下B  B01    棚B-1   5足

となるようにしたいのですが、何かいい方法はありますでしょうか?
かなりの長文になってしまいましたが、
ご教授の程、宜しくお願いします。
・ツリー全体表示

【10605】MSysCompactErrorについて
質問  TK  - 08/10/17(金) 12:31 -

引用なし
パスワード
   アクセス97ファイルを最適化しようとしたら
MSysCompactErrorが出力されました。
どういった原因で出力されるのでしょうか?
御教示お願い致します。
・ツリー全体表示

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