ACCESS総合相談所 その8

このエントリーをはてなブックマークに追加
320名無しさん@そうだ選挙にいこう
Accessで検索を実行するさいに従業員リスト(勤務可能時間が入力してある)
テーブルで何時〜何時勤務可能な人を検索したい場合、どのように勤務可能時間を入力し、また検索フォームではどのように検索すればよいでしょうか?

マルチキタ━━━━━(゚∀゚)━━━━━━!!
322_:03/06/02 15:04
323直リン:03/06/02 15:14
324名無しさん@そうだ選挙にいこう:03/06/02 15:24
★クリックで救えるオマ○コがあるらしい★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
325320:03/06/02 16:11
マルチすいません。
どうしても知りたかったので焦ってしまいました。
教えてもらえないでしょうか?
between でヘルプ検索
327名無しさん@そうだ選挙にいこう:03/06/02 17:13
between でヘルプ検索っていうのを
もう少し詳しく教えてくれませんか?
328動画直リン:03/06/02 17:14
329名無しさん@そうだ選挙にいこう:03/06/02 17:30
ACCESS2000を使っています。

EXCELだと簡単にできるのですが
参照設定をせずにコモンダイアログ(ファイルの選択)を使いたいのですが
方法が解りません、どなたかご存知の方がいましたら教えてください。

※.
 EXCELのVBAだと「Application.GetOpenFilename」
330名無しさん@そうだ選挙にいこう:03/06/02 17:43
>>329
なんか定期的にこの質問が出るな。

ACCESS2002以降か、GetOpenFileNameのAPIを使え。
>>330
自分で調べるより人に聞いたほうが早いって風潮ですからねぇ・・・
>>327
ヘルプの使い方も分からんの?
333_:03/06/02 19:16
334名無しさん@そうだ選挙にいこう:03/06/06 15:46
初歩的な質問かもしれませんがお願いします。
ある条件から検索するクエリを元に、常に同じフォームで検索結果を返したいんですけど、これは無理なんでしょうか?
具体的には、1レコードの全情報を一気に表示するフォームを作って、
それを表示するまでの検索条件を色々にしたいんですが、どうもうまくいきません。
1つのクエリからならできるんですが、他のクエリからだと表示されないんです。
335334:03/06/06 15:49
例を挙げると、音楽データベースを作っているとして、アーティスト名から検索してもアルバム名から検索しても、常に同じフォームで結果を返したいときには、
アーティストから検索した場合のフォーム、アルバム名から検索した場合のフォーム、
このようにフォームを作り続けなければならないんでしょうか?
>334-335
フォームのレコードソースをその都度設定すればよいのでは?
337名無しさん@そうだ選挙にいこう:03/06/06 16:23
WinXP、Access2000を使用しています。
テーブルから、同じIDの回数の合計を出すような
クエリを作る事は可能ですか?
可能な場合、どうすればよいでしょうか?

テーブル:
年,月,ID,回数
2000,1,A0001,5
2000,2,A0001,8
2000,3,A0001,2
2000,1,A0002,1
2000,2,A0002,2
2000,3,A0002,6

クエリ
ID,回数合計
A0001,15
A0002,9

皆様方,よろしくおながいします。
>337
ヘルプをよく読む

最近ヘルプをちょっと読めばわかるような質問とか
ぐぐれば答えが山のように見つかる質問が多いんだね。
>>335
ワイルドカード(*)を使えばいいでしょ
クエリの抽出条件で
アーティスト名
Like Form![フォーム1]1[txtアーティスト名]
アルバム名
Like Form![フォーム1]1[txtアルバム名]

アーティスト検索[txtアルバム名]にアスタリスク入れて[txtアーティスト名]を指定する
アルバム検索[txtアーティスト名]にアスタリスク入れて[txtアルバム名]を指定する
全リスト[txtアルバム名]、[txtアーティスト名]ともにアスタリスク
>>337
SELECT ID,Count(ID) AS 回数合計 FROM テーブル1 GROUP BY ID
>>337
SQLなら Group By句を使います。
クエリデザイナーで作成する場合は、ID,回数フィールドを出力に選んで
マウス右クリックで表示されるポップアップメニューから「集計」を選択。
IDフィールドにはグループ化、回数フィールドには合計を指定すれば
結果を得られるはずです。
342名無しさん@そうだ選挙にいこう:03/06/06 17:06
デザインビューでクエリを作るときに、同じ○○IDが2つあるときはどっちをドラッグ&ドロップすればいいんでしょうか?
343無料動画直リン:03/06/06 17:14
344名無しさん@そうだ選挙にいこう:03/06/06 17:26
Access2002で、単票フォームの中にデータシート型のサブフォームを作りたいだけど、
サブフォームまで単票型になってしまいます。
職場にある2000では自動的にデータシート型になってたんだけど・・・
>>342
> 同じ○○IDが2つあるときはどっちを

これが何を指しているのか意味不明です。
状況説明が不足していると思われます。
こういう時はテーブル構造の参考例を上げるべきでは?
346342:03/06/06 17:36
>>345
商品テーブル     見積もりテーブル
商品ID        見積もりID
商品名        商品ID
商品区分       数量

こんな感じのテーブルからクエリを作るときに、どっちのテーブルの商品IDをクエリに追加すればいいんでしょうか?
これがよくわからなくて、クエリ作りがちんぷんかんぷんです。
>>344
データシート型のサブフォームは
・メインフォームのデザイン時は単票で表示
・メインフォームの実行時はデータシートで表示
のような振る舞いをしていますけど?

異なるバージョン間での動作の違いは割り切ったほうが良いと思います。
むしろ、「前のバージョンではこうだった」という思いが、時には問題
解決を遅らせる場合もあります。
>>346
テーブル間の従属関係を元に判断すれば良いのはないでしょうか。
おそらく、見積もりテーブルが主(あるじ)で商品テーブルがそれに
対して補う形で、つき従う関係が成り立っているはずですよね?

見積もりテーブルの各レコード <- 商品テーブルから商品名、商品区分を補完

この場合は主となる見積もりテーブルから"見積もり.商品ID"を選んで
くれば良いでしょう。

あと、色々なクエリを数多く組んでみれば(場数を踏む)無意識のうちに
どのフィールドを選ぶべきか判断がつくようになります。
訂正>>348
> 判断すれば良いのはないでしょうか。
判断すれば良いのではないでしょうか。
350困ったさん:03/06/06 20:54

皆様こんばんは。
Access2000で、難題を抱えて悩んでいます。

【難題】
@ フォームに、テキストボックスと、ボタンを配置する。
A テキストボックスに、ファイルへのパス(「c:\db\sample.xls」等)を入力して、ボタンをクリックすると、
  ExcelやWordやAcrobat等のアプリケーションが立ち上がって、パスにあるファイルが開く。

こういうことはAccess2000で可能でしょうか?
方法があるなら是非教えてください。どうか、よろしくお願いします!m(_)m
351_:03/06/06 20:57
352無料動画直リン:03/06/06 21:14
>>350
板超えてマルチするなんざ、とんでもない奴だな。

Access使い集合! Ver2.0
http://pc2.2ch.net/test/read.cgi/tech/1032402846/671
>>350
できる。
では、終了!
355名無しさん@そうだ選挙にいこう:03/06/06 22:51
>>350に便乗質問だけど、同じような方法で任意のウィンドウを開けますか?
俺、初級です。
>>355
任意のウィンドウって何だろう
357困ったさん:03/06/06 23:10
>353
ごめんなさい。 この相談所スレッドの存在を私は後で知ったので・・・・
358_:03/06/06 23:12
359直リン:03/06/06 23:14
360名無しさん@そうだ選挙にいこう:03/06/06 23:56
>>356
フォルダのことだろう
ちがうだろう
362名無しさん@そうだ選挙にいこう:03/06/07 10:42
Access2000をつかっています。

Accessのフォームで、可変高さのレコードというのは実現できるでしょうか?
Excelの書式設定で言うところの「(文字列を)折り返してすべて表示」ということをしたいのです。
データシートビューでもフォームビューでもかまいませんが、
文字列型のフィールドに入るテキストの長さにばらつきがあって(20〜255文字)
それらを画面の無駄なく表示させつつ編集したいと考えています。


商品番号|商品名|コメント
---------------------------------------------------------------
00000000 | ほげ  | かっちょいいんでかってください。
---------------------------------------------------------------
00000001 | ふー  |じゅげむじゅげむごこうのすりきれかいじゃりすぎょふう
      |     |らいまつうんぎょうまつやぶらこうじぶらこうじくうねると
      |     |ころにすむところぱいぽぱいぽの(以下略)
---------------------------------------------------------------
00000002|ばー  |禁断の蓮コラ写真集。
---------------------------------------------------------------
00000002|パズー|「おやかたー」とさけぶシーンって藤波竜之介が
      |     |「おやじィ!」と絶叫しているシーンとダブりませんか?
---------------------------------------------------------------
363名無しさん@そうだ選挙にいこう:03/06/07 11:51
むり
Access2002買え
364362:03/06/07 14:33
2002ならできるの?
>>357
> ごめんなさい。 この相談所スレッドの存在を私は後で知ったので・・・・

それは、あんたの都合だろ。
むこうに仁義は切ったのか ?
366名無しさん@そうだ選挙にいこう:03/06/07 20:30
質問なのですが
毎日の営業の記録を蓄積してます、このテーブルには、日時、訪問者、
訪問先、A商品販売個数、B商品販売個数などがあります。

このテーブルから、指定した1ヶ月間の、訪問者ごとの
訪問先数、A商品販売個数、B商品販売個数の合計が知りたいのですが
よい方法はありませんかね?
よろしくお願いします。

367名無しさん@そうだ選挙にいこう :03/06/07 20:38
質問です
OSはWindows XPでAccess2000
うちの大学、証明書発行(成績証明書など)に
Microsoft accessを使ってるんだけど
科目数が今後増えてテーブルのフィールド追加が
できなくなりそう。(科目名、評価、取得年度を
ひとつのクエリでまとめてレポートで印刷している為)
accessにくわしい人や大学に勤めている人で
成績証明書を発行するいい方法あったら教えてください。
また、大学職員の人に聞きたいのですが、
もしaccessが限界で、将来業務用システム入れる
としたら、とこのどんなシステムがいいか
教えてください


>>367
学生テーブル: 学生番号、氏名、住所、〜
成績テーブル: 学生番号、科目コード、取得年度、成績、〜
科目テーブル: 科目コード、科目名〜

これでテーブルを作り直せ。
あっちの、>>8 >>12 >>14 は多分ネタ。
369名無しさん@そうだ選挙にいこう:03/06/07 20:51
よろしくお願いします。
DateSerial関数を使用して1ヶ月分の年月日を作成すると、例えば6月など30日間の月は、
DateSerial(2003,6,31)が翌月の7月1日となってしまいますよね。
この7月1日のような翌月分のデータを空白で返したいのです。
6月は1ヶ月分30レコードではダメなのです。
常にレコード数は31で不要なデータは空白です。

可能なのであれば、ヒントだけでもお願い致します。
370ぅらら ◆MvRbZL6NeQ :03/06/07 21:10
>>362-364
知らなかった・・・今度使ってみよう。


>>369
今手元に環境がないのですがこんな感じでできると思います。

IIf(Month(DateSerial(2003,6,31))=(6+1),Null,DateSerial(2003,6,31))
371ぅらら ◆MvRbZL6NeQ :03/06/07 21:24
>>369
シマッタ・・・
年の変わり目(12月)考慮してなかった(鬱
その辺自分で考慮してね。

でもおそらく非常に複雑な式になるので、一度固定で372レコードの「月日」テーブルを作って
不一致クエリで突き当てたほうが高速動作すると思いますよ。 多分。
>>370
IIf(Month(DateSerial(2003,6,31))<>6,Null,DateSerial(2003,6,31))
はどうですか。
373369:03/06/07 22:49
>370
>372

回答ありがとうございます。
参考にして関数作成したところうまく行きました。

Function test(hizuke As Date, kongetu As Single) As Variant

 If Month(hizuke) <> kongetu Then
test = Null
 Else
  test = hizuke
End If

End Function

  ※ hizuke(DateSerialで作成した日付) kongetu(日付を作成する際の月データ)

DateSerialで作成した日付からMonthで月を抽出すればよかったんですね。
ありがとうございます!
>>370
騙されるなよ

VBA使う必要があるかな

VBA使ってもレイアウトつうか
なんつうかが変になるかもしれないので
かなり難しいかも
MS ACCESS2000 / Windows 2000 - ODBC - DB2
という環境で、下記URLにある、文字コードの違いの吸収の仕方が判りません。

http://www.developer.ibm.com/ja/tech/faq/individual/0,,2:78728,00.html

どこを設定変更したら、全角の「!」等の文字を「?」に変更させずに済むでしょうか?
376直リン:03/06/07 23:14
おい!おまいらもすごろく作りに参加汁!
http://life2.2ch.net/test/read.cgi/offreg/1054655407/l50
ちなみにこれはコピペしてひろめてくれ。
378_:03/06/07 23:33
379名無しさん@そうだ選挙にいこう:03/06/08 14:56
質問です
レポートから印刷をするのに
元になるクエリを指定しますが
そのクエリのフィールド数が多すぎて
クエリを2つに分けなければならないんです
それでレポートからその分けた2つのクエリを
同時に使用したい場合どうすればいいのですか?
教えてください
多分クエリの作り方がまずい。

いくらフィールドが多いと言っても、必須となる抽出条件は限られてる筈だし、
1つにまとめることは十分可能な筈。
381名無しさん@そうだ選挙にいこう:03/06/08 18:40
フォームの元になってるクエリの抽出条件と、フォームのリストボックスの値集合ソースのクエリの抽出条件は、
どっちを設定するのかがいまいちよくわかりません。
普通はどちらか片方だけに設定したりするものなんですか?
382名無しさん@そうだ選挙にいこう:03/06/08 18:49
ご質問です。
WinXP、Office2000を使用しています。
書籍といろいろなサイトを参考にしながらアクセスの勉強をしています。
メンバー管理として以下のようなものを作っています。
http://cgi.members.interq.or.jp/hokkaido/asato/upload/jam3ddr/OB000004.gif
このメンバー表を仕事用やお友達などとカテゴリ分けをしようと考えているのですが、
今のところは分類テーブルを作成(分類コードと分類名)、メンバーテーブルに分類コード
の項目を追加と、いうところまでは出来ました。ここからどういう風にすれば良いのでしょう?

希望は下のドロップリストで分類を選択すると該当するメンバーだけ上に表示される。
またそこで追加したメンバーはその分類に追加されるという感じにしたいです。

お手数ですがよろしくお願いいたします。
↓の>>8に正規化の意味を教えてやってください。
かなり楽しい大学のようです。

http://pc2.2ch.net/test/read.cgi/bsoft/1054963223/l50
384383:03/06/08 20:00
どうやら大まじめに正規化を語っているのは教授のようです。
385名無しさん@そうだ選挙にいこう:03/06/09 11:52
windows2000/access2002を使用しております。
CD-ROM等の媒体から「DISCID、ボリュームラベル、ディレクトリ名、ファイル名、ファイルサイズ」を取得してテーブルに取り込みたいのですが、どのようにしたらよいかご教授ください。
386おやぶんのこぶん:03/06/09 12:04
>>385
DIR関数を使ってみては?
387名無しさん@そうだ選挙にいこう :03/06/09 12:20
質問します
エクセルデータをアクセスの
レポートで印刷するには
どうしたらいいでしょうか?
エクセルデータをアクセスの
テーブルやクエリに保存して
レポートから印刷するのなら
わかるのですが、
テーブルやクエリを経由せず
レポート印刷する方法は
ありませんか?
教えて下さい
388385:03/06/09 12:26
>>386
早速の回答ありがとうございます。
ところでDIR関数ではDISC-IDが取得できないようなので、DISC-IDを取得する方法をご教授ください
389名無しさん@そうだ選挙にいこう:03/06/09 12:39
質問します
エクセルデータをアクセスの
レポートで印刷するには
どうしたらいいでしょうか?
エクセルデータをアクセスの
テーブルやクエリに保存して
レポートから印刷するのなら
わかるのですが、
テーブルやクエリを経由せず
レポートで直接印刷する方法は
ありませんか?
教えて下さい
>>389
テーブルのリンクでxlsファイルを指定する。
391名無しさん@そうだ選挙にいこう:03/06/09 15:23
OS:WindowsXP Pro.
ACCESS:OfficeXP(作成中のものは2000形式)

フォーム上に、テーブルから値を読み込んで表示するリストボックスを作りました
が、数値表示がうまくいきません。

テーブルの定義では、通貨型で小数点以下は0にしてあるのですが、リストボックス上では
「1.00」というように小数点以下2桁まで0が表示されてしまいます。

どのようにしたら小数点以下を表示させずに整数で表示できるのでしょうか?
アドバイスよろしくお願い致します。
そのリストボックスのプロパティの書式を設定する。
393391:03/06/09 16:19
>>392
リストボックスのプロパティの書式で、どのようにすればそのような設定ができるかが
分かりません・・・。
すみませんが、具体的にお願いしますm(_ _)m
あー悪い、素でボケとった。リストボックスには書式ないよなぁ。
プロパティの値集合ソースのクエリビルダ使った時に
フィールド上で右クリック→プロパティ→書式って出来たような気がする。
それで表示が変わるかはわからんが。
わびついでに。検索してみたらこんなの見つけた。
参考になるかどうかわからんが。
http://www2.mougb.net/cgi-bin/mdboard.cgi?acopr+ML2003030319
>>391
テーブルのその数値データのフィールドの書式は何になってる?
「数値」か未設定だったら「標準」か「固定」にしてみて
397391:03/06/09 18:21
>>395
ごていねいにありがとうございます。
『Format([T-集計].[集計コード], '##,##0')』
これでうまくいきました。
私も検索でいろいろ探してみたんですけど・・・、さすがですね。
本当にありがとうございました。

>>396
レスありがとうございます。
書式は標準になっていました。
398名無しさん@そうだ選挙にいこう:03/06/10 09:16
成績証明書をクエリを元に
レポートから印刷するのに
例えばある選択科目をとってないと
レポートの科目の表示
(ラベルであらかじめ全科目
表示してある)を消すという
ことはできないでしょうか?
つまり選択していない科目は
表示されないようにしたいのです。
VBAのコードを利用するのでしょうか
詳しい人教えて下さい
なんか、最近マルチ流行だな・・
400385:03/06/10 12:37
>>388をお願いします
催促禁止
また成績証明書か
お前マルチだろーが
>>385
Win32 APIのGetVolumeInformation()関数を使ってlngVolumeSerialNumberを取得
または、Scripting.FileSystemObjectのGetDriveでSerialNumberを取得
404名無しさん@そうだ選挙にいこう:03/06/10 14:13
>>330
遅くなってスイマセン
ACCESS2002以降、又はAPIで了解。
405_:03/06/10 14:14
406名無しさん@そうだ選挙にいこう:03/06/10 17:31
access2000についてご質問します。

VBAを使って、他のデータベースのテーブルを丸ごとインポートしたいときは
『DoCmd.TransferDatabase acImport・・・』でできますが、

その、他のデータベースのテーブルのデータのうち、条件指定したレコードだけをインポートするには
(SQLの「INSERT INTO…FROM…WHERE…」のFROM句に、他のデータベースを使いたいというような意味です)
どのような方法があるでしょうか?
407名無しさん@そうだ選挙にいこう:03/06/10 17:49
408名無しさん@そうだ選挙にいこう:03/06/10 18:41
フォームでデータ入力するときに、フォームではチェックボックスで入力して、
テーブルにはYes/No型ではなく普通のテキスト型で納まるようにしたいんですけど、
そういう自動的にデータ型を変換するようなことはできるんでしょうか?
>>406
SQL。
試しにアクションクエリを作ってみたら?
で、それをSQLビューで見れば記述方法が分かるよ。
>406
リンクテーブルにすりゃいいんじゃねーの?
>408
yes/noの列とは別にテキストの列用意してyes/noのafterupdateで書き換えりゃ
いいんじゃねーの?
412406:03/06/11 11:21
>409
ありがとうございます。とても助かりました。
SQLで「IN」を使うことで他のデータベースのテーブルも参照できるんですね。

>410
クライアント・サーバ(クライアント多数がサーバのテーブルを参照する)のため
リンクをかけてしまうのは怖い気がしまして。
必要時にサーバから読み込み、「登録」ボタンなどでサーバのデータを更新するようにしてます。
413100人に1人:03/06/11 18:42

 ◎人の嫌がることをズケッと言うのはこんな奴!
<アスペルガー症候群(自閉症スペクトラム)←脳の機能的疾患(遺伝が要因)>
●変化を嫌う
http://web.kyoto-inet.or.jp/org/atoz3/kado/book1/Williams-Asp.htm

●接し方のルールがわからず無邪気に周囲の人に対して迷惑なことをしてしまうことがある。人を傷つけるということには鈍感(相手の立場に立って考えられない)。
●パターン的行動、生真面目すぎて融通が利かない
 毎朝の通学電車では同じホームの同じ場所から、同じ時間の同じ号車に乗ることに決めていたりする。パターンを好むということは反復を厭わないことでもある。
●アスペルガー症候群の子どもは(大人も)感覚刺激に対して敏感。敏感さは聴覚、視覚、味覚、嗅覚、温痛覚などのいずれの感覚の敏感さもありえる(特に視覚が敏感)。
●アスペルガー症候群の子ども(大人も)は予測できないことや変化に対して苦痛を感じることが多い。
http://www.autism.jp/l-02-03-aspe3.htm

●独り言を言うことが多い(考えていることを口に出す)
●物事をいつまでも同じにしておこうとする欲求が強く、そうでないと非常に不安。いわゆる「こだわり」。
●自発的に行動することが少なく、興味の幅が狭い
●物まねをしているような不自然な言語表現
●自閉症スペクトラム全体としては一万人に91人(およそ100人に1人)。
http://www.ypdc.net/asuperugar.htm

★自閉症スペクトラムの考え方(アスペルガーに至らない気質の偏りもある(遺伝性))
http://www.imaizumi-web.com/030413.html  
   
★アスペルガー症候群(自閉症スペクトラム)かどうかのテスト
http://twitwi.s10.xrea.com/psy/add.htm 
http://www.geocities.co.jp/Beautycare/5917/as/marksheetmake.html


414名無しさん@そうだ選挙にいこう:03/06/13 17:11
テーブルにおいて"館"という文字を含むデータのみを赤字として
レポートで印刷したい場合、どのような細工をすればよろしいの
でしょうか?条件付書式ではできなかったのですが・・・・
どなたか御教示ください。
>>414
Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
  If InStr(1, Me.TextBox1.Value, "館") > 0 Then
    Me.TextBox1.ForeColor = RGB(255, 0, 0) '赤
  Else
    Me.TextBox1.ForeColor = RGB(0, 0, 0) '黒
  End If
End Sub
416名無しさん@そうだ選挙にいこう:03/06/13 19:00
>>415
様、うまく行きました。ご丁寧な回答ありがとう御座います。
つまづくたんびに人に答え教えてもらう人生
418名無しさん@そうだ選挙にいこう:03/06/14 11:34
フォームウィザードで設定できる背景は、最初からウィザードで作らないと使えないんでしょうか?
デザインビューで作ったフォームに背景使いたいんですけど。
>>418
フォームのプロパティで書式タグの各項目を調べればわかるのだが・・・
ウィザードで作成したフォームの(プロパティ)ピクチャ項目を見て
この設定値はなんだろうって思わないのだろうか?
420おしえてクン:03/06/14 14:52
dbMAGICのデータをACCESS2000にインポートする方法はありますか?
CSVからでないとダメなら、dbMAGICのデータをCSVに変換するソフト(できればフリー)
を教えてください。
ここで質問する内容でなかったら申し訳ありません。
421名無しさん@そうだ選挙にいこう:03/06/14 16:04
オートNoのID等を使わずにレコードの番号を取得するにはどうすればよいでしょうか?
422名無しさん@そうだ選挙にいこう:03/06/14 16:18
もう一つ質問です。
日付データなどを使わずに数千件あるレコードから最近入力したレコード30件のみを抽出する方法ありませんでしょうか?
レコードの"番号"って何?
424あぼーん:03/06/14 16:52
425421-422:03/06/14 16:55
>>423
SQLで抽出したレコードの行番号のようなものの事です。
>>420
dbMAGICのファイルシステムは何がバンドルされてる?
それを調べることで解決の糸口を見つけられるかもしれないよ。
たしか Btrieveか最近の製品なら PervasiveSQLのはず。
それに ODBCドライバが添付されていたら、テーブルリンクして
直接、データの読み出しができる*かも*しれない。
427おしえてクン:03/06/14 17:35
>>426さんへ
BtrieveかPervasiveSQLか解からないですが、DATファイルとLCKファイルがセットになっています。
428名無しさん@そうだ選挙にいこう:03/06/14 18:10
フォームを作るときに、基になるテーブルやクエリの設定をしないで作った場合、
あとからフォームの設定をいじっても遅いんでしょうか?
フォームを作るときにクエリも作らないといけないときと、そうでないときの区別が付かなくて困ってます。
429418:03/06/14 18:36
>>419
ビットマップとかを指定できるのはわかったんですが、ウィザードみたいにコントロールの枠の色とかを一気にまとめて統一的にしたいんです。

ネットありがとう!これで生活できます。
本当に良かった・・・・・
http://www.h2.dion.ne.jp/~m_oka/moemoe/afelli.html
>>427
そういうのは情報の価値としてはゴミに等しい。
問題解決の手掛かりにはならないでしょ。
どうせならdbMAGICのバージョンを明記したほうが情報を入手するうえで
有効だと思うのだけど、それ(dbMAGICのバージョン)すらわからないの?
>>429
・アドイン、ウィザード、ビルダを自分で作る
 デベロッパーエディションには作成の為の情報が公開されている
・フリーウェア&シェアウェア等でアドインを探す
 中身は知らんけど、そういう機能を謳ったシェアウェアがある
433名無しさん@そうだ選挙にいこう:03/06/14 23:06
メインメニューを作るときは、メニュー用フォームビルダを使ったほうがいいんですか?
普通にデザインビューからコマンドボタン作りまくる方法ではだめですか?
>>433
とくに「こうであるべき」という暗黙の了解と言うか決まりはないでしょう。
自分の注いだ労力に対して、それに見合った成果物が得られるかどうかで
手法を選択すればよろしいのでは?
オレはコマンドボタン+ハイパーリンクで作ってる
436名無しさん@そうだ選挙にいこう:03/06/15 01:19
フォームウィザードでサブフォーム付きのフォーム作りたい(というかデザインビューから作るとわけわからなくなる)んだけど、
項目選んで次へ進むときに、「サブフォームのあるフォーム」を選べるときと、
いきなり単票形式とか選ぶところまで飛ぶときがあるんだけど、どういうこと?
437おしえてクン:03/06/15 09:48
>>431
dbMAGICのバージョンは、V8.2K2です。
ACCESS2000へのインポート方法はありますか?
>>437
そこまで、わかっているなら自分で調べがつくだろうが?
ttp://www.wacom-net.co.jp/magic/0011272.htm この Webページによると
MAGIC V8.2K3以前:Btrieve6.15 Workstation(ワークステーションエンジン)
MAGIC V8.2K4以降:Pervasive.SQL 2000 Workgroup(ワークグループエンジン)
ということだ。ここまでわかったらdbMAGICのことなんか忘れてしまっていい。

次に考えることは Btrieve6.15 Workstationのファイルを読む手段だ。
ttp://www.pervasive.co.jp/SUPPORT/FAQ/faq_common.html#80 このWebページに
その方法が記載されている。
Btrieve6.15が出荷された時期には、INTERSOLV社の Btrieve用ODBCドライバが
同梱されていた可能性があるので、自分の PCに ODBCドライバが組み込まれて
いないか確認してみな?無かったら他の方法を探すしかないがね。
439おしえてクン:03/06/15 11:47
>>438
大変丁寧な説明、ありがとうございます。
さっそく、トライしてみます。
結果報告は、また後日。
440名無しさん@そうだ選挙にいこう:03/06/15 14:33
フォーム上で、Excelのオートフィルタみたいにコンボボックスで選んでしぼり込み検索みたいなことはできませんか?

社員:鈴木 佐藤
担当取引先:A社 B社 C社

社員で鈴木を選ぶと、その下の取引先は鈴木の担当のA社とB社だけが表示されるみたいな感じにしたいんです。
取引先はコンボボックスの値から引っ張る

コンボボックスのソースは社員テーブルから引っ張る

コンボボックス<取引先
 |
社員
442440:03/06/15 18:06
>>441
それだと社員を選んでからでないとだめですよね。
それに項目は、社員と取引先の2つだけじゃないんです。
取引先を選べば担当コンボボックスの中は、その取引先の担当社員だけが表示されて・・・・、という感じにしたいんです。
>>442
おまいさん、その物言いは441氏に対して、ちと失礼ですよん。

> 取引先を選べば担当コンボボックスの中は、その取引先の担当社員だけが表示されて・・・・、
> という感じにしたいんです。
この要件は>>440では述べていないじゃないですか?
441氏は先に出た要件を受けてアドバイスしているわけだから
それに対してケチつけるのはいかがなものかと。
フォームに2つのオプショングループを用意しました。
この2つのオプショングループで選択したものをAnd、またはOrで結合して絞り込みをしたいのですが、
どのようにすれば良いのでしょうか。
現在の状況は下記の通りです。

オプショングループ1/トグルボタン型(フレーム名:フレーム_製品名)
商品ごとの数を数える(各トグルボタンを押すことでクエリを実行するようにしています←どこかのサイトの見よう見まね・・・)

オプショングループ2/トグルボタン型(フレーム名:フレーム_年代)
購入者の年代を数える(オプショングループ1同様、各トグルボタンを押すことでクエリを実行するように指定)

オプショングループ3/ラジオボタン型(フレーム名:種類選択)
オプショングループ1とオプショングループ2を繋げる(AndとOrの項目を用意)

用は、
「商品」(オプショングループ1)をどの「年代」(オプショングループ2)の人がどのくらい買ったのか、を調べたいのです。
ボタン操作のみでこれを行えれば、と思ってこのような形をとることを考えているのですが、
そのほかにも良い方法はありますか?
445444:03/06/15 20:46
追記。
ド素人な質問かつ、教えてちゃんで申し訳ないです・・・
いろいろと本を読んだりしているのですが、まだまだVBAが分かってないのです。
446名無しさん@そうだ選挙にいこう:03/06/15 23:32
フォームを開くとすでに、フォームフィルタを押した状態(レコードからフォームフィルタを選んだ状態)にしておくことはできますか?
>>444
データ件数が増えてくると、1回のクエリの実行時間がバカにならないと思うのですが、イイノ?

>>446
フォームを開くイベントにDoCmdでフォームフィルタコマンドを指定すればよいのでわ?
448名無しさん@そうだ選挙にいこう:03/06/16 05:19
コンボボックスの更新前処理について教えてください。
Access2000です。

Private Sub コンボ1_BeforeUpdate(Cancel As Integer)

If MsgBox("このデータを変更してよろしいですか?", vbOKCancel + vbExclamation) = vbCancel Then

Cancel = True
DoCmd.RunCommand acCmdUndo

End If

End Sub

IFステートメントのキャンセルで更新前のデータを表示させたいのです。
このように書いてみたのですが、「DoCmd.RunCommand acCmdUndoが無効です。」のエラーが出てだめです。
どのように書けばよいのでしょうか?
449名無しさん@そうだ選挙にいこう:03/06/16 08:51
Windows2000上でAccess97を使うと不安定なんでしょうか?
実際不安定なんですが、Windows2000上ではAccess2000を使ったほうが
よいでしょうか?
450名無しさん@そうだ選挙にいこう:03/06/16 13:47
>>449
OSとACCESSの食い合わせについては、
色んな意見があるようだが、実はよく知らない。

ただ、ACCESSは97と2000で大きい仕様の変更があるので、
うかつに乗り換えると、今までうまく動いていたものが
動かなくなる可能性が大きい。特にVBA使ってるようなら
乗り換えは慎重にw
>>448
メニューバーの編集-元に戻すコマンドには
 1.元に戻す-入力
 2.元に戻す-カレントフィールド/レコード
の2種類がある
それぞれの動作と等価な (VBAの)メソッドは
 1.の場合 -> Me!フォームコントロール.Undo
 2.の場合 -> Me.Undo または DoCmd.RunCommand acCmdUndo

上記を踏まえたうえで、当該の更新前処理で実際に使えるメソッドは
 1.Me!フォームコントロール.Undo - コントロールに対する変更のキャンセル
 2.Me.Undo フォームの全体とカレントレコードに対する変更のキャンセル
であり、Me.Undoと等しいであろうDoCmd.RunCommand acCmdUndoはエラーになる。
理由は知らん。マニュアルにも書いておらん。
イベントとメソッドの組み合わせパターンをテストしてわかること。
DoCmd.RunCommand acCmdUndoが使えるイベントは変更時、更新後処理など。

要約すると
"各イベントにおけるメソッドの振る舞いを把握してから使えや ゴルァ!"
ってことだな
>>449
不安定という表現は漠然としていてどんな状況かはわかりかねますが
WindowsNT4.0, Windows2000にてAccess97を使用して知り得たことは
・Access97を起動した時点からCPU使用率が常に100%になる
・メモリ使用量がAccess97を終了してもなかなか下がらない
こんなところですかね。
ここらへんはAccess2000以降、解消されています。
453448:03/06/16 15:34
>>451
>"各イベントにおけるメソッドの振る舞いを把握してから使えや ゴルァ!"
>ってことだな
なるほど!
非常に分かり易いレスありがとうございます!
参考になりました。
そして、無事解決です。
454名無しさん@そうだ選挙にいこう:03/06/16 17:24
社内で使う顧客管理データーベースを外注する予定です。

現在、サーバは、NT3.5+Oracle、クライアントはAccess97という状況ですが、
(1) OracleよりAccess97で作成してもらう方が安いのでしょうか?

(2) Access2000+VBで作成した場合、Access2000がなくてもコンポーネントなどで動作可能でしょうか?

(3) クライアントをAccess2000にアップデートした場合、既存のAccess97で作成したデータベースはそのまま動くのでしょうか?

よろしくお願いします。
>>442 440さん、解決したのかな?
そう言うのをフレキシブルにしようと思ったら、コンボボックスの「フォーカス所得時(Enter)」で
使用クエリーを切り換えて表示させるようにすれば良いのでは?

条件1.取引先が選択されている時→
    担当コンボボックスをクリックすると該当取引先担当が表示される
条件2.取引先が選択されていない時→担当コンボボックスには担当名全員が表示される
条件3.担当が選択されている時→
    取引先コンボボックスには該当担当の取引先が表示される
条件4.担当が選択されていない時→取引先名が総て表示される

条件1.の場合用に取引先選択担当表示クエリー(クエリーA)
条件2.の場合用に全担当表示クエリー(クエリーB)
条件3.の場合用に担当選択取引先表示クエリー(クエリーC)
条件4.の場合用に全取引先表示クエリー(クエリーD)

担当コンボボックスのフォーカス所得時(Enter)に
if isnull(取引先コンボボックス)=false then
 forms!form!担当コンボボックス.rowsource="クエリーA"
else
 forms!form!担当コンボボックス.rowsource="クエリーB"
end if
docmd.requery "担当コンボボックス"
取引先コンボボックスにも同じような切り替えを記述しておく。
これで希望に近いものができると思うけど…どうかな?
>>454
(1)について
Oracle+Accessの場合とAccess単体では設計そのものが異なるでしょうし
その設計次第で製作時間も変わってくるでしょう。
それぞれの打ち合わせ〜出荷までの総作業量の差が価格の差になります。
ですから、双方のケースで見積りを取るまではわからないはずです。

(2)について
Access2000本体無しでMDBファイルに対する読み書きが可能か?という
意味においては可能です。MDBは単なるファイルです。
Access2000からMDBファイルに対して読み書きを行う場合
 Access2000 - JetDataBaseEngine4.0 - MDB
とJetデータベースエンジン(DLL)を仲介します。
Access2000の代わりにVBでプログラムを作成する場合は
 VBプログラム - JetDataBaseEngine4.0 - MDB
という構成になり、Access2000そのものは必要ないのです。

(3)について
そのままでは動きません。
ファイル形式をAccess97からAccess2000の形式に変換する必要があります。
それとVBAで書かれたプログラムの修正も必要になります。
457名無しさん@そうだ選挙にいこう:03/06/16 20:53
        今週の売上個数
  

    6/1 6/2 6/3 6/4
社員名 3 2 2 1
社員名 2 5 1 2
社員名 12 3 5 8

質問なんですが
こんな表を作りたいのですができますかね?
_, ,_ 
(;゚A゚)
>>457
できるんじゃないの?ピポットテーブルとか使えば
>457
1.クエリーで抽出したものをExcel表に入れ込めばその表は出来上がると思う。
2.レポート内でDlookupを使用してレポートを作成する(ただしその場合、1日に
 おける最大社員数が分からないと洩れが発生する可能性あり)
私はその手の業務処理(提出表)の要望があると
最終的にはループをバシバシ使ってExcelの雛型に代入して印刷させてる

他にアイデアある人いない?
461454:03/06/16 22:34
>>456
レスありがとうございました。
参考になりました。
わからないことだらけですが、勉強して最良の方法を模索したいと思います。
>457
クロス集計クエリがよいと思う。
463名無しさん@そうだ選挙にいこう:03/06/18 10:51
MID関数は左から数えての文字の抜き取りですが、
この逆で左からのはありませんでしょうか?
例えば"ABCDEFG"の文字列があったとします。
この文字列の右から4番目以降2文字"DE"を抜き取る
関数はありませんでしょうか?
>>463
RightとLeft組み合わせて使えば出来る。
465名無しさん@そうだ選挙にいこう:03/06/18 11:54
>>464
やりたい事は、123456789の数を
1億2,345万6,789の様に桁の漢字を
入れたいんです。
何かいい方法ありませんでしょうか?
iifやselectとかいくらでも方法は在りそうだが
464>>465
それなら最初からそう質問すればいいのに。
いろいろ方法は思いつくけど自分はもう答える気にならん。
>>466の手でやってみれば。
こういう時ってC言語みたいにポインタで文字列操作できたら・・・
とか思ってしまう私はダメ?
>465
そんなに難しいかな?
数字扱いしないで、億/万が入ったものを文字列扱いすればいいんじゃない?
rightで右4桁を取得して文字列変数Xに代入、
次にmidで中央4桁を取得して文字列変数Yに代入、
右9桁より左を文字列Zに代入して
文字列変数A=文字列変数Z&"億"&文字列変数Y&"万"&文字列変数X
ただし、数字の桁数が可変式の場合はさらに考えないといけないけどね。
その辺は、自分の頭をひねってアイデアを出すところでしょう。
インターネットのAccessTipsとかにヒントはいっぱいあるけど。

ちなみに、私なら数字の文字数をチェックしながらループで処理する。
470469:03/06/18 14:40
あ、桁の,を忘れてたね。
初めに数字の文字数をチェックすれば、
left/mid/right/len/modの組み合わせで
億/万/,は入れられると思う。

いろいろ頑張ってみてくれ
>>465
Function User_Format(ByVal SourceVar As Variant) As String
Dim i, StrLeng As Integer
Dim TempVar As String
Dim ReturnVar As String

TempVar = SourceVar
StrLeng = Len(TempVar)
472471から続き:03/06/18 21:44
If StrLeng <= 4 Then
 User_Format = Format(TempVar, "#,##0")
Else
 TempVar = StrReverse(TempVar)
 For i = 1 To StrLeng
  Select Case i
  Case 1
   ReturnVar = Left(TempVar, 1)
  Case 4
   ReturnVar = ReturnVar + ","
   ReturnVar = ReturnVar + Mid(TempVar, i, 1)
  Case 5
   ReturnVar = ReturnVar + "万"
   ReturnVar = ReturnVar + Mid(TempVar, i, 1)
  Case 8, 12, 16
   ReturnVar = ReturnVar + ","
   ReturnVar = ReturnVar + Mid(TempVar, i, 1)
  Case 9
   ReturnVar = ReturnVar + "億"
   ReturnVar = ReturnVar + Mid(TempVar, i, 1)
  Case 13
   ReturnVar = ReturnVar + "兆"
   ReturnVar = ReturnVar + Mid(TempVar, i, 1)
  Case Else
   ReturnVar = ReturnVar + Mid(TempVar, i, 1)
  End Select
 Next i
 User_Format = StrReverse(ReturnVar)
End If
End Function
50点
474名無しさん@そうだ選挙にいこう:03/06/18 22:03
100点のプロシージャ キボーン
475名無しさん@そうだ選挙にいこう:03/06/18 22:28
Access上から指定したファイルをサーバにアップロード・ダウンロード
とかできますか?Accessをはじめたばかりでさっぱり検討つかないので
教えてくだちゃい。
476名無しさん@そうだ選挙にいこう:03/06/18 22:29
プログラミングのお供に・・・
http://mypage.odn.ne.jp/home/dongrico
Function NIPPON(ByVal s As String) As String
 Const JPN As String = "万億兆"
 Dim L As Long, i As Long, j As Long
 L = Len(s)
 i = L \ 4
 j = L Mod 4
 If j = 0 Then
  NIPPON = Left(s, 1) & "," & Mid(s, 2, 3)
  j = 5
 Else
  NIPPON = Left(s, j)
  j = j + 1
 End If
 While (j < L)
  If i > 0 Then NIPPON = NIPPON & Mid(JPN, i, 1)
  i = i - 1
  NIPPON = NIPPON & Mid(s, j, 1) & "," & Mid(s, j + 1, 3)
  j = j + 4
 Wend
End Function
>475
FileSystemObject
>>477
入力が 12345678 の時、出力が 1,234億5,678
入力が 123456789012 の時、出力が 1,234兆5,678億9,012
入力が 1234567890123456 の時、出力が 1,2345,678兆9,012億3,456
になりますよ?
480480-1:03/06/18 22:59
>471
数字の字数を例えばMODで4で割った時3余りなら","
余り無しの1ループ目なら"万"、2ループ目なら"億"
3ループ目なら"兆"と言う風にもできると思うが…?

1.数字はstrY=Cstr(Format(数字A, "#,##0")、始めにstrYの字数αを求める
2.ループ回数をintCountとし、ループをα回数行う
 出来上がる文字列をstrZとし、varZ=""
 ループ5の場合"万"、10なら"億"、15なら"兆"とし、これらをstrXとする
 ループ内はintCountがMOD(intCount,5)=0の場合、varZ=strX&MID(strY,α-intCount,5)&varZ
481480-2:03/06/18 22:59
strY=Cstr(Format(数字A, "#,##0"))
α=len(strY)
If α <= 4 Then
varZ = strY
Else
varZ=""
intCount=0
for intCount=α
if mod(intCount,5)=0 then
select case intCount
case 5
strX="万"
case 10
strX="億"
case 15
strX="兆"
end select
varZ=strX&MID(strY,α-intCount,5)&varZ
β=intCount
elseif intCount=α then
varZ=strX&left(strY,α-β)&varZ
end if
next intCount

細かいところがいろいろ違ってるかもしれないけど、こんなんでどう?
482480:03/06/18 23:01
↑ごめん、なんかスペース入れたのに表示されてなくて見辛いね
483名無しさん@そうだ選挙にいこう:03/06/18 23:12
>>478
ありがとうございます。調べてみます。
>>479
2行目を
Const JPN As String = "万億兆京垓穰溝澗正載極"

5行目を
i = (L - 1) \ 4

にしてください ゴメン
Const JPN As String = "万億兆京垓し穰溝澗正載極"
だった
>>480-481
先にFormat関数で Format(StringsVar, "#,##0") のように整形すると
結果が 1,2億34,56万7,890 のようになりますよね。
463=465は、この出力でも良かったのかなぁ?・・・
>>481を動くように勝手に手を加えさせていただきましたん。
strY = CStr(Format(数字A, "#,##0"))
a = Len(strY)
If a <= 5 Then
 varZ = strY
Else
 varZ = ""
 For intCount = 1 To a
  If (intCount Mod 5) = 0 And intCount <> a Then
   Select Case intCount
    Case 5
     strX = "万"
    Case 10
     strX = "億"
    Case 15
     strX = "兆"
   End Select
   varZ = strX & Mid(strY, (a - intCount) + 1, 5) & varZ
   b = intCount
  ElseIf intCount = a Then
   varZ = Left(strY, a - b) & varZ
  End If
 Next intCount
End If
Windows XPでAccess 2002を使用しています。

1.「顧客情報」と「登録情報」のテーブルからデータを参照するクエリ(「検索項目クエリ」)から、
フォームを作成しました。(「検索フォーム」)
2.この「検索フォーム」から、「フォームフィルタ」を使って必要なデータを抽出しました。
3.この抽出したデータから、「コード」「氏名」「メールアドレス」「メール受信項目」の項目だけを、
同じく「検索フォーム」に配置した「出力ボタン」をクリックすることで
別に用意した空のテーブル(「送信用」)に書き出したいと思っています。

以上が現在の状況です。2.まではうまく行ったのですが、3.がどう組み立てていいのかわかりません・・・
追加クエリを使うのかな、と思っているのですが、どのように書けばいいのかがさっぱり・・・(><)
VBAもまだまだ未熟でほとんど分かっていないので、マクロだけで何とかしようとしているのがそもそもの間違いでしょうか・・・
どなたか教えてください。お願い致します。
488名無しさん@そうだ選挙にいこう:03/06/19 03:58
まったく場違いかもしれませんが、教えてください。
第三正規形であって、Boyce-codd正規形でないものとはどのような
ものなのでしょうか?
489480:03/06/19 09:50
>>486 チョ〜亀レスで申し訳ない。修正してくれてありがとう。
で、1,2億34,56万7,890→12億3,456万7,890 に修正してみました。

Dim strY As String
Dim 数字A As Long
Dim a As Integer
Dim b As Integer

strY = CStr(Format(数字A))
a = Len(strY)
490480:03/06/19 09:52
If a <= 4 Then
varZ = CStr(Format(数字A, "##,##0"))
Else
varZ = ""
b = 0
For intCount = 1 To a
If (intCount Mod 4) = 0 And intCount <> a Then
Select Case intCount
Case 4
strX = "万"
Case 8
strX = "億"
Case 12
strX = "兆"
End Select
varZ = strX & Mid(strY, (a - intCount) + 1, 1) & varZ
b = intCount
ElseIf (intCount Mod 4) = 3 And intCount <> a Then
varZ = "," & Mid(strY, (a - intCount) + 1, 3) & varZ
b = intCount
ElseIf intCount = a Then
varZ = Left(strY, a - b) & varZ
End If
Next intCount
End If

End Sub
491480:03/06/19 09:53
何で、私だとスペースが認識されんのだろう…トホホ
>>487
検索フォームのフォームフィルタがどのような抽出条件か分からないけれど
1.フォームフィルタの抽出条件をクエリー化する。
2.そのクエリーはテーブル作成クエリーとして、抽出データを一時テーブルに
吐き出す。
3.それを基に検索フォームの検索条件で抽出→空のテーブル(「送信用」)に
書き出し(書き出さなくてもテーブル作成してしまうこともできる)
…と言う方法もあると思うけれど?
例えば検索フォームにサブフォームを組み込み、フォームを開いた時は
現在のフォームフィルタ抽出条件のデータを表示し、検索実行したら
検索結果の表示に切り替えると言うこともできるよ。
>>489-491
ご苦労様です。(477氏も)
2chの板にインデントして整形したソースを貼り付ける時は半角スペースを
全角スペースに置き換えるとよろしいようです。

ところで、このプロシージャ。463殿が見てくれないと勿体無いような・・・
494480:03/06/19 10:59
>>493
あ〜なるほど、全角スペースだったんですか。ありがとうございます。

463さんに見て戴けなくても、ここを見ている誰かのためになれば…
って言うより、自分が気になってやりたかっただけなんですけどね はっはっは
それでいいんじゃないでしょうか?気にしない気にしない
>>494(480)かっこいい!
496名無しさん@そうだ選挙にいこう:03/06/19 23:07
早く>>494さんみたいになりたし
ようかいにーんーげんっ
ACCESS2002でMSDEを使う予定です。
ADPではクライアント上にローカルテーブルを作ることができないので
MDBからADO経由でMSDEに接続しようと思っています。

いまさらながらの質問ですが、ADO接続でMSDE上のレコードを返すビューを呼び出した場合
検索結果のみがトラフィックを流れてくるのでしょうか?

Jet接続の時は相手がSQLserverだろうがOracleだろうが、レコード全部がクライアント側に
一度流れてきていたので、ちょっと心配になってます。
>>498
わざわざ苦労してmdbで作る理由がわからない。
ADPで開発するほうが効率がよいでしょ。
(mdbで作るメリットって何ですか? VBやC#で作ったほうがよくないか?)

作業用テーブルは一時テーブルを作ればいいと思うのだけど。
CREATE TABLE #TempTable.....

作業用のテーブル作って、コンピュータ名などをフィールドに入れて
ユーザー別にレコードを切り分ける方法あるね。
>>499
毎日大量のデータをインポートして、加工の上その一部をサーバに登録、
みたいな処理だとどうなんだろ。
一時テーブルとのやり取りで結構トラフィック食いそうな気もするんですが。
件数によるのかな。

いや、現在プログラム兼ワーク用とデータ用、マスタ用などの分割MDBを運用してるんですが、
SQL Serverなりに移行しようかと考えていたところで。
501名無しさん@そうだ選挙にいこう:03/06/20 18:03
ACCESSを使用して仕事をしています。
ACCESSのバグが原因で莫大なSE工数を費やしました。
費用請求を行う方法はありませんか?

世界中で発生しているバグによるSE工数を合算したら
いくらになぬろだろう。
>>500
そんな処理ならインポートも一時テーブルも不要では?
元のファイルから1件ずつ読み込んでテーブルに書き込めば良い。
mdbにインポートしてから書き込むのとLANのトラフィックは大差ないと思う。
503498:03/06/20 21:44
>>499

やりたいことをざっと整理すると・・・
 1:日付などの条件を入力し検索する
 2:検索結果一覧を別フォームで確認する
 3:検索結果一覧をレポートで印刷する

と、いたって簡単な処理。
MDB(Jet)時代であれば検索結果を一時テーブルとして保存し、
それをレポートのレコードソースにすることができました。
※1度の検索処理で済む

しかし、ADPではクライアント側にローカルテーブルを作ることができませんよね。

そこで、ストアドプロシージャで一時テーブルを作り(例えば ##TEMPTABLE)、
それをレコードソースにすることにしました。

2番の別フォームから参照することはできますが、レポートとして印刷することができません。
(##TEMPTABLE は存在しません。 などと言われる)

じゃぁ、ストアドで一時テーブルなんて作らずにレポートのレコードソースを
ストアドにすればいいじゃん!と思うかもしれませんが、それだと2回検索を
かけることになるので(フォームとレポート分)、負荷が気になります。


ということで、MDBからADO接続ならば一度の問い合わせで済むから良いかな?
と思っている次第です。


一番の問題点はストアドで作った一時テーブルをレポートのレコードソースにできない(やり方を知らない)ことにあります。
どなたか良い解決方法知りませんでしょうか?よろしくご教授ください。
504 :03/06/20 22:46
505499:03/06/21 00:23
> 一時テーブルをレポートのレコードソースにできない
これは確かに糞な仕様ですよね。レコードセットも指定できないし。

解決案)
一時テーブルを使わず、検索結果を保存する通常のテーブルを使用します。
(検索時にテーブルを作成するのではなく、恒久的なテーブルです。)
検索結果を書き込むときに、コンピュータ名、ユーザー名も書き込めば、
どの端末の検索結果なのか判断できるので、フォームに表示するなり、
レポートで印字するなりすればよいでしょう。

ただ、>>503の機能だけならmdbでも難しくないですね。
506421-422:03/06/21 09:30
主キーを設定しないで入力したレコードが以前入力したレコードに
存在する場合、入力値をキャンセルするには、どのようなコードを
書けばよいのでしょうか?
507_:03/06/21 09:38
508直リン:03/06/21 10:14
>>506
一意のキーフィールドがあるならそれを検査すればよろしい。
でも、それがあるなら主キーを設定しない理由がわからない。

そもそも、ユニークなキーがないなら、
>入力したレコードが以前入力したレコードに存在する場合
の判定はできないと思うけど。
510506:03/06/21 12:45
>>509
対象の列にNullのレコードがあるため主キーが設定できません。
考えとしては、
1.VBを使ったSQLでNullのレコードを排除してVBで主キーを設定してやる。
2.Findメソッドを使って検索する事は出来ないかな?
の2件が思いつきますが、どのようなコードを書けばいいでしょうか?
511509:03/06/21 12:56
>>510
後々のことを考えれば1.の対処のほうがいいとは思う。
漏れが書くなら、
レコードセットでテーブル取得

主キーにしたいフィールドを検査

if isnull(fields(キーフィールド)) then
fields(キーフィールド) = 名付けルールに従った新規コード
としてEOFまでぐるぐる回すかな・・・・・
で、その後重複クエリで重複検査して、
不要分削除して主キー設定。

でも件数少なくてリレーションが複雑で
なければ、エクセルで処理してコピペだな。
512498:03/06/21 12:59
>499
そうですか、ストアドで作った一時テーブルはレポートのレコードソースになれないのですね・・・
解決案にあるように一時テーブル的なテーブルを作って対処したほうがよさそうですね。
ありがとうございました〜
513名無しさん@そうだ選挙にいこう:03/06/23 09:52
メモ型フィールドを、googleの検索のように、スペースで
区切って複数の検索を行いたいのですが、方法をご存知の方は
おられますか?
>>513
検索文字列をSplit関数分割して、配列からSQLを作ればできるかな
515名無しさん@そうだ選挙にいこう:03/06/23 10:53
>>514
分割して、SQL・・・を組み立てるところ迄は逝ったのですが・・・
30万件有り、さらに増える予定なので、like等では使い物にな
らないのです。。。で頭を抱えているのですが。。。
516名無しさん@そうだ選挙にいこう:03/06/23 10:55
☆貴方好みの美女をクリックしてみて☆(特典いっぱい)
http://endou.kir.jp/yuminet/link.html
>>515
SQL ServerかMSDEにすれば
518名無しさん@そうだ選挙にいこう:03/06/23 11:31
>>517
既存のモノを改造しているため、早々簡単には。。。
それに、エンジンを代えたところで、根本的な
解決にはならないのですが。。。
だったら30万件なんて書かなきゃいいのに
520名無しさん@そうだ選挙にいこう:03/06/23 13:20
>>519
よくわかりませんが。。
インデックス付きのデータなら、30万件程度ローカルで扱う
程度でしたら、Access(jet-mdb)で日常的に普通に管理しておりすし、
今までも何の問題もなかったのです。
ただ、メモ型フィールドの複合検索の作成の追加で頭を抱え
ているのです。
>>518
何で解決しないってわかるの?
MSDEでテストしたのか

仕様、自分が試したこと、どのようにうまくいかないのかを記述しろよ。
今まで何の問題も無いからと言って現状を押し進める、阿呆か
523名無しさん@そうだ選挙にいこう:03/06/23 14:16
>何で解決しないってわかるの?
>MSDEでテストしたのか
MSDEでのテストは行っておりませんが、likeを多用した
SQLで速度の向上が劇的になるとは思いませんで。。。
また、メモ型フィールドだけのために大幅な書き換えの
必要になってくることもあり、できれば避けたいのです。

>仕様、自分が試したこと、どのようにうまくいかないのかを記述しろよ。
where以下のandで、likeをつなげているのですが?
WHERE
F1 Like '*' & 'a' & '*'
And F1 Like '*' & 'b' & '*'
And F1 Like '*' & 'c' & '*'
And F1 Like '*' & 'd' & '*'
等のように。
>>523
メモ型はインデックスが作成できないなど、DBのエンジンの問題だろ。
525名無しさん@そうだ選挙にいこう:03/06/23 18:35
>>524
DBエンジンの問題云々といわれても。。。
現状で実用的速度を得られる方法を探して
いるのですが?
>>525
まぁ、そういらつくな。
スレが荒れる。
解決案1) MSDEで作り直す。
解決案2) メモ型フィールドをテキストファイルに変換してインデックスサービスで検索する。
解決案3) 自分でインデックス処理を作る。
解決案1) MSDEで作り直す。
解決案2) MSDEで作り直す。
解決案3) MSDEで作り直す。
529名無しさん@そうだ選挙にいこう:03/06/23 22:08
いきなりADP+MSDEって無謀?
530名無しさん@そうだ選挙にいこう:03/06/23 22:52
どうやら、妙案はなさそうですね。

この処理だけでMSDEを導入するつもりはありませんので、
>>527さんのインデックスサービスかNamazの使用を検討します。

ありがとうございました。
531名無しさん@そうだ選挙にいこう:03/06/24 13:49
ACCESSを使用して仕事をしています。
ACCESSのバグが原因で莫大なSE工数を費やしました。
費用請求を行う方法はありませんか?
533名無しさん@そうだ選挙にいこう:03/06/25 00:59
PC初心者版から流れてまいりました。
OSはXP、Access2002です。
レポートを印刷時に複数列表示させているものに、
グループヘッダーをつけたのですが、
グループヘッダーの横幅も、1列の幅になってしまいます。
デザインビューで設定したとおりの大きさにすることはできませんでしょうか?
やりたいことは、
「ページの途中にグループの区切りのラインを表示させる」
(ラインの幅は、1ページの横幅いっぱい)
というような事なのですが、
グループヘッダー以外でもできるのでしょうか?
アドバイスお願いいたします!
534533:03/06/25 02:56
533で質問したものです。
複数列分、グループヘッダを追加すれば、
何とか実現できました。
あまりスマートなやりかたではないかもしれませんが、
今はよしとしておきます。
考えてくださったかたどうもありがとうございました。
おじゃましました。
535名無しさん@そうだ選挙にいこう:03/06/25 17:51
ACCESS2000の質問です。
フォームで、印刷項目を指定したもののみをレポートに表示させる
ようなものを作ろうとしています。具体的には、

項目指定用のテーブル[T_項目]を用意し、フィールドを
[項目][チェック] とします。

フォームに「レポート印刷ボタン」を配置し、サブフォームから[T_項目]を操作できるようにします。
このサブフォームで印刷したい項目をチェックをした後、レポート印刷ボタンを押すとプレビューが表示される、
といった感じです。

レポートには、非連結のテキストボックスを印刷項目の最大数分配置しておき、開いた時にチェックのついているものがその
テキストボックスのソースになるようなイメージです。

レポートのオープンイベントの時に、

DoCmd.OpenTable "T_項目"
DoCmd.GoToRecord acDataTable, "T_項目",acFirst

For i=0 to 項目数
If [T_項目].[チェック]=True Then
k(i)=1
End If
DoCmd.GoToRecord acDataTable, "T_項目",acNext
Next i
この後にレポートのテキストボックスのソースに、k(i)=1の項目のみ、指定しようとしています。
が、その前に「オブジェクトが必要です」とエラーがでます。
どのようにしたらいいでしょうか・・・
>>535
ソース貼るなら、むしろ

>この後にレポートのテキストボックスのソース

の方が重要。
エラーが出るのはこっちの方でしょ。
ところで、ステップインして確認してる?

まず、それをやるとコードのどの部分で
エラーが出てるかも分かるはずだよ。
537名無しさん@そうだ選挙にいこう:03/06/25 20:24
ADPでプログラムを組んでいます。
SQLを使って抽出したデータをexcelにエクスポートって出来ますか?
Outputto以外で。お願いします。

また、Access2000からMSDEにアップサイジングしたら
rs.Indexのrs.seekが上手く使えなくなりました。インデックスの
設定が出来ないでいます。(インデックス/キーの設定はした。)
rs.seekを使う際の記述法が変わったのでしょうか?こちらも
併せて質問させてください。お願いします。
>>537
質問が漠然としすぎてて答えられないよ
あなたはどこまで調べてるの?
コードくらい貼ってみたら
539名無しさん@そうだ選挙にいこう:03/06/26 11:10
@
もし
 A かつ B
ならば
 not B にして、C する

A
もし
 A かつ not B
ならば
 B にして、C する

これを書けばこんな感じなのでしょうか?
if A and B then not B C
if A and not B then B C

@A両方を行いたいのですが、永遠にループしてしまいます。
そうではなく
 @の場合はAを一度行って終わり。
 Aの場合は@を一度行って終わり。
このようにしたいのですがどうすればよいでしょうか?

どうぞよろしくお願いします。
VBA?
elseifを使うか、この場合だと
もし
 A
ならば
 B を not B にして、 Cする
でいいと思う
>>539
当たり前だが、永久ループはループ条件が成立しているから。
ループ条件も書いとかないと分かんないよ。
>>539
「永遠にループしてしまいます。」と言うことは、
単純にループ終結の条件が満たっていないだけでしょう?
と言うことは、「条件を満たせて」やればいいだけ。
@かAに一度入ったらとにかくループを出ると言うなら
@かAの中に「exit (ループ)」を入れればいいだけ。
A/B/Cが何なのか良く分からないから何とも言えない。
グループ?変数?何かの値?条件?
543名無しさん@そうだ選挙にいこう:03/06/27 23:42
ツールバーにあるフォームフィルタボタンやフィルタの実行ボタンをフォーム上に置くことはできないんでしょうか?
ウィザードを使ってコマンドボタンを置くと、フォームフィルタの実行や編集を設定できるんですが、
ツールバーにあるものとは別物みたいなんですけど。
544543:03/06/27 23:43
書き忘れました。
Access2002です
545名無しさん@そうだ選挙にいこう:03/06/28 00:26
>544
韓国人が全てそうではない。
変な偏見を持たずに一度旅行に行けばいいでしょう。
546名無しさん@そうだ選挙にいこう:03/06/28 11:56
ACCESS2000を使ってる者です。
イベントプロシージャの記述に関する質問です。

例:
「コマンド1」というコマンドボタンがあったとします。
このボタンを押すとそのボタン自身の色が徐々に変化するというプログラムを組む場合。

通常
private sub コマンド1_Click

  me.コマンド1.Backcolor = ???????? + 1

End Sub

という感じに記述したとします。
この場合、イベントコントロールである「Me.コマンド1」を記述しなければならないのですが
この名前を記述せずに、イベントコントロール名を参照できるような方法が無いかと思ってます。

もし方法があればよろしくお願いします。
>>546
>前を記述せずに、イベントコントロール名を参照

他のコントロールでも使えるコードにしたいということかな?

  Set ctlCurrentControl = Screen.ActiveControl
  myCName = ctlCurrentControl.Name
  Me.Controls(myCName).BackColor = ??????? + 1

てな感じでどう。
548546:03/06/28 12:30
>>547
>他のコントロールでも使えるコードにしたいということかな?
そのとおりです。

ctlCurrentControl.Nameですか。

VBAのHELPで探したけどなかなか見つからなくて苦労してました。
どうもありがとうございます。
>>548
ctlCurrentControlはオブジェクトの変数だよ。
この部分に意味は無いぞ。
あくまで、set 〜 と組み合わせて使う時の
任意の変数なので間違えないように
550543:03/06/28 14:16
>>543
どなたかこの質問よろしくですm(__)m
>>550
>フォームフィルタの実行や編集を設定できるんですが、
>ツールバーにあるものとは別物みたいなんですけど


これで、何が不満なのか良く分からないんだけど。

闇雲にやりたいことを書くより、何を実現したくて、
現状どんな不具合があるのかを具体的に書いた
ほうがいいんじゃないの。
552543:03/06/28 17:17
>>551
ツールバーと同じものをフォーム上に置きたい、それだけです。
553543:03/06/28 17:20
それかフォームを開いたときに、自動的にツールバーからフォームフィルタを押した状態になってる、でもいいです。
554名無しさん@そうだ選挙にいこう:03/06/28 18:06
よろしくお願いします。苦戦中です><
メインフォームの操作で、サブフォームにあるコンボボックスのRowSourceプロパテイを設定したいのです。
いろいろ試していますが、どうもうまくいきません。
どのように書いたらよいか教えて下さい。
access2000です。
ズバリ!お金に困ってる人・・『フルーツメール』というサイトなんですが、
なんとこのサイトでは紹介すると1人につき『300円』貰えるんです。
掲示板などに書き込んで置けば色々な人が登録してくれてどんどん儲かります。
このサイトのメールを受信しておくだけでもなかなかお金になると思いますよ(*^_^*)
※1メール受信するごとに約5円貰えます。  メールはほぼ毎日着ます。
■□フルーツメール□■
http://banana.fruitmail.net/cgi/introduce_jump1.cgi?1032900
↑登録だけでもしておいても損はないですよ。
年会費等は一切かかりませんし入会するだけで
『100円』貰えるんです(*⌒▽⌒*)
 紹介者IDのとこ『1032900』でお願いしますm(_ _)m
これ続けてたら絶対儲かるはずです!
貯めたお金は私は銀行の口座に振り込んで貰ったり
商品券として送って貰ったりしています。
日によって違いますが儲かる日はスゴく儲かります!
いろんな掲示板に張り付けすれば寝てるだけでお金になります。
頑張って下さいね(^O^)

>>553
フォームのOPENイベントにApplyFilterのコードを書く。
VBAが分からなければ、フォームのプロパティで
「開くとき」にフィルタの適用だかのアクションを登録。

でも普通なら、クエリーの条件を変えるコードを
書くほうがいい気がするが。
557554:03/06/28 23:46
Private Sub M_cmb_AfterUpdate()

Me!ob_sbfrm.SourceObject = ""
DoCmd.OpenForm "SbFrm", acDesign, , , , acHidden

If Me!M_cmb.ListIndex = 0 Then

Forms!SbFrm!Sb_cmb.RowSource = "Test1"

ElseIf Me!M_cmb.ListIndex = 1 Then

Forms!SbFrm!Sb_cmb.RowSource = "Test2"

End If

DoCmd.Close acForm, "SbFrm", acSaveYes
Me!ob_sbfrm.SourceObject = "SbFrm"

End Sub

試行錯誤の末こんなコードになってしまいました・・・
メインフォームにあるコンボボックスM_cmbの更新後処理でサブフォームのコンボボックスSb_cmbのRowSourceをクエリTest1又はTest2に切り替える処理です。

サブフォームを一度デザインビューで開いて設定しています。
これぐらいしか思いつきませんでした。
もっとスマートな方法があれば教えて下さい。
>>557
親フォーム.子フォーム.Form.コンボボックス.RowSource=test1
559554:03/06/30 11:21
>>558
レスありがとうございます。
が、どうもうまく出来ませんです。
とりあえずは、上のコードでよしとする事にします。
>>559
亀レスですが、
>>557の記述はメインフォーム!M_cmbのAfterUpdateなので
1.メインフォーム!M_cmbのChange(変更時)に記述する
2.サブフォームのSbFrm!Sb_cmbのクリック時に
if forms!メインフォーム!M_cmb.ListIndex = 0 Then
 Forms!SbFrm!Sb_cmb.RowSource = "Test1"
if forms!メインフォーム!M_cmb.ListIndex = 1 Then
 Forms!SbFrm!Sb_cmb.RowSource = "Test2"
end if
ではどうだろうか?
どのように上手く行かないのか良く分からないけれど…
561560:03/06/30 12:00
>560の内容は1.あるいは2.の記述のどちらかで上手く行かないか?
と言うことです。
ちなみに、AfterUpdateを使った場合例えばコントロールに
フォーカスをTabで移動した場合などは感知しないようです。
例えばマウスクリックでもTabキーでも前のコントロールから
Enterキーでエンターしての移動でも感知させたい場合は、
AfterUpdateよりもChangeやEnterを使った方が良い場合があります。

>560の2.は「クリック時」よりも「フォーカス取得時」の方が良いですね。
訂正します。
562名無しさん@そうだ選挙にいこう:03/06/30 17:50
環境:Windows・Office XP

いろいろ検索しても、いい情報が見つからず困っています・・・。

DBEngine.CompactDatabase "C:\A999\仕入管理DB.MDB", "E:仕入管理DB.MDB"

で、HD内のデータベースをMOにバックアップする処理を行っています。
MOへの書き込みに時間がかかるため、処理を行っている間プログレスバーを表示させたいのですが、
どのようにすればよろしいでしょうか。

よろしくお願い致します。
563554:03/06/30 18:14
>560
レスありがとうございます。
出来ました。
正解は「フォーカス取得時」だったのですね。
イベントによってサポートしている処理が違うと言う事ですか。
勉強になりました。ありがとうございます。
564560:03/06/30 19:22
>563 554さん、解決してよかったですね。

>イベントによってサポートしている処理
そうですね。サポートしている処理と言うよりは、
イベントの発生タイミングと発生順序が違うのです。
例えば、あるコントロールでクリック時のイベントを発生させた場合、
a)マウスクリックによるイベント発生
b)フォーカス(そのコントロールがアクティブなる時)によるイベント発生
などのイベントが同時にそれぞれのイベントタイミングと順序で発生するのです。
>>562
プログレスバー表示はここで説明するのは大変です。
ググると結構いろいろ出てくるはずですけれど…
「V○A道具箱」のAccess便利ツールの進行ゲージや
T'sWareD○wnl○adにも汎用プログレスバーがあります。
それを参考にするのでどうでしょうか?

プログレスバーではなくステータスバーに表示させることも出来ます。
Access2000でならば
Dim strMsg As String 'ステータスバー表示文字
Dim varReturn As Variant 'ステータスバー表示用変数
strMsg = "進行状況の表示テスト"
varReturn = SysCmd(acSysCmdSetStatus, strMsg)
でAccess画面左下に表示できると思います。
>>565
そもそも最適化がどのくらい進んでいるのか、
というのを取得できないのでは?
567565:03/07/01 00:46
>>566
う〜ん、そうかも、そこまでは考えてない。
私の返答は"「プログレスバー」の表示の仕方"についてであって
"最適化の進行状態を取得できないので教えてください"と言う
質問の返答ではないと思っているのでつが…
568562:03/07/01 10:12
>>565
レスありがとうございます。
565さんのおっしゃるとおり、プログレスバーの表示の仕方を教えていただきたいと
思っています。

参考にできそうなものはいくつか見つかったのですが、どれもループで処理する間
プログレスバーを表示させるもので、実際には使えそうにないんです。
表示できれば、ステータスバーでもなんでもいいんですけど・・・。

そもそも全体の処理がどれくらいかかるかはっきりしないものは、難しいのでしょうか。
569565:03/07/01 11:32
>565
以前使ったのは、SysCmdでステータスバーに文字をメッセージを
表示させるだけだったが。初めはプログレスバーや点滅するメッ
セージフォームを表示させていたが、Access自体で重い処理をさ
せてる時に表示をさせるのは表示自体が苦しくてやめた経験がある。
(ハード性能が高ければ問題ないだろうが)
せいぜい、「バックアップ中」と言う表示をさせとくだけで良いのでは?

余談だが、仕入管理DB.MDBはデータテーブルのみなのかな?
データと処理部分が分かれていなければ、データのみバックアップす
るようにすれば早くなるような気もするが…
570名無しさん@そうだ選挙にいこう:03/07/01 12:45
すいませんアクセス初心者ですが、
win98にてアクセスver7for95(うろ覚え)で作成したデータベースを
XPにてアクセス2000またはアクセス97で開こうとしても
ダメで変換せよとでたのですが、変換も「オートメーションエラーです」
となってしまします。解決方法ありますでしょうか。
もともと無理なものなのでしょうか。なんでも情報があれば
よろしくお願い致します。
>570
空のデータベースを作りファイルから外部データの取り込シル
572562:03/07/01 18:42
>>565
レスありがとうございます。

>せいぜい、「バックアップ中」と言う表示をさせとくだけで良いのでは?

私もそう思ったのですが、バックアップに時間がかかるため動いているのか
どうか分からないと言われたんです・・・。
バックアップするものはDBのみです。処理部分とDBは分けてあります。

本屋さんに行って来てAPIの本を手に入れたので、挑戦してみます。

最終的にどうしてもできなければ、ステータスバーかプログレスバーで数秒間
毎に■を増やしていくような、一応動いていることが分かるようなものにしよう
かと思っています。
処理がデータの保存なので、ループ処理のようなものではないため、うまくいく
かどうかは分かりませんが・・・。
573565:03/07/01 19:02
>562
それならプログレスバーよりメッセージフォームの点滅の方が良いと思う。
進行状態の%が掴み難いならば、1秒ずつメッセージフォーム内の
メッセージの表示や背景色を変更して描画するだけになる。
ただし、この弱点はハード的に性能が低かったりAccess自体の処理が
他で忙しい場合、描画が思うように上手くされない点。

メッセージフォームのタイマー間隔に点滅の間隔を入力
メッセージフォームのタイマー時にイベントを
If Forms!メッセージフォーム名!背景.BackColor = 16711808 Then
Forms!メッセージフォーム名!背景.BackColor = 16711680
DoEvents
Else
Forms!メッセージフォーム名!背景.BackColor = 16711808
DoEvents
End If
DoEvents
のように書き込む。(これはメッセージフォームの背景そのものを変更する場合)
最悪、こんな方法もある。
素人板の方で尋ねるべきかずいぶん迷ったのですが
「コレってマクロとか使わないとできないのでは?」
と思ったのでこちらで質問します。

Aテーブル
  商品ID、商品名、価格
Bテーブル(日々蓄積される)
  消費者名、商品ID、個数

と作って
クエリで商品IDを結合して販売記録を作るとしますね

販売記録
  消費者名、商品ID、商品名、価格、個数
でもこれだとAテーブルの価格を変えると過去の販売記録の
価格も変わります。

当然のことで、本当はBテーブルに価格欄を作って
入力した時点の価格を取得して記入されるように
すれば良いと思うのです
が、しかし、その方法がらわからないのです。

もうひとつ、Aテーブルの価格が変わるごとに
更新した日付を取得して履歴も残したい。

この二つを解決したいので
よろしくお願いします
>>574
あくまで一例。他にもっと良い方法があると思う。

まずBテーブルに価格列と日付列を追加する

価格を参照するにはいろいろ方法があるけど、規定値とかどう?
Dlookupあたりが楽かな?

更新した日付は、Bテーブルを日付と商品名と価格でグループ化したクエリで分かるよね?
576574:03/07/01 21:15
↑待って!!
いや、待たなくてイイのですが…

履歴を残すには『グループ化』(?)をするのですね?
(分かってないですね)
Bテーブルに価格と日付の列の追加は分かります
その価格列にAテーブルの一致する商品IDの価格を取得する方法がわからないのです

品名 価格
カレーライス 450円
チャーハン 350円
チャーシューメン 550円
ギョウザ 250円

こんな感じの食堂メニューテーブルがあったとして、
フォームで、例えば700円と入力したときに、700円以内で買える全商品の組み合わせ(重複はなし)が
順番に出てくるというようなクエリはどうやって書けばいいんでしょうか?
具体的にはこんな感じにしたいです。

[700円]
カレーライス
ギョウザ 700円(合計金額)

次のレコード
[700円]

チャーハン
ギョウザ 600円
578名無しさん@そうだ選挙にいこう:03/07/01 23:05
DB板が見るからに荒れているので、こちらでOFFICE2000についてくる
MSDEについて質問させてください。

常時接続が5人までで、それ以上になるとパフォーマンスが低下すると言うのを
見るのですが、その接続とはADODB.Connectionのcn.Open時と言う事でしょうか?

また、試しでMDBからMSDEにアップサイジングしたところ、日付/日時型のデータに
#2003/07/01#でアクセス出来なくなりました。これの対処法は'2003/07/01'で
良いのでしょうか?何故かアクセス出来たのですが、合点いかないもので。
すみませんが、よろしくお願いします。
>>576
更新後処理とDlookupを使う。とりあえずヘルプ見てみて。
580名無しさん@そうだ選挙にいこう:03/07/02 00:25
>>577
商品のすべての組み合わせをクエリではじき出して
さらに合計金額が700円以内のものをクエリではじき出せや
581577:03/07/02 01:12
>>580
>商品のすべての組み合わせをクエリではじき出して

具体的にどんなクエリを書けばいいのでしょうか?
>>577の4品目の例でいいので教えてください。
>>562
そもそも最適化↓
DBEngine.CompactDatabase "C:\A999\仕入管理DB.MDB", "E:仕入管理DB.MDB"
の処理が終わるまでカーソルが次の行へ移動しないのでは?
つまり最適化中にDoEventsすること自体できないのでは?
と思います。
マルチスレッドにすればできるかもしれないけど
VBでは無理でしたよね?
最適化してる時はビジー状態なのでおとなしく待つしかないんじゃないですかねぇ。
だいぶ前の話しなので私の勘違いかもしれませんが。
>>581
順列・組み合わせの解法(アルゴリズム)わかる?わかんなきゃ調べてみ。
そうすりゃクエリ(というよりSQL)だけで解を求められる問題なのか
見極めがつくと思うがね。
>>578
自分はAccessやSQL Serverあまり詳しくないですが書いてみます。(きっとウソもある)

>常時接続が5人までで、それ以上になるとパフォーマンスが低下すると言うのを
どこでそのような情報を?
自分の顧客はMSDEで約20台のクライアントを繋いで運用しています。
10台程度の同時アクセスは頻繁にあると思いますが、苦情を言われるほどのパフォーマンスの低下はありません。

>その接続とはADODB.Connectionのcn.Open時
以前この処理スピードを実験しましたが、クライアント一台でも遅いと思います。
理由無ければリアルタイム処理ではcn.OpenしないでCurrentProject.Connectionを使った方が速いと思います。
しかし、大量のレコードを更新するような処理ではcn.Openで別の接続をした方が速い場合もあります。

>また、試しでMDBからMSDEにアップサイジングしたところ、日付/日時型のデータに
アップサイジングはそれほど親切なツールではないと思った方がいいと思います。
何事もなく動けば良しとして、問題あったら仕様を調べるべきです。
>>581
たとえば、\150のものが20種、\250のものが50種、\300のものが30種ある、とする。

\150のものだけを抽出したクエリ、\250のものだけを抽出したクエリ、\300のもの
だけを抽出したクエリ、これらを、別の新たなクエリのデザインビューに並べる。
ただ並べる。
結合線はいっさい結ばない。
ただそれぞれのフィールドのみを選択する。
たぶん重複なしで20X50X30種の組み合わせが出る


さて
いくらといくらの組み合わせだったら\700以内におさまるかを、クエリのみで
出すのは難しそう。
まずは価格だけでグループ化し、それを昇順に並べてみる("Q_Kakaku")
さらにテーブル"T_KakakuKumiawase"を用意、フィールドは"番号"、"価格"の2つ
(つづき)
Dim MyDb As New ADODB.Connection
Set MyDb = CurrentProject.Connection
Dim MyTbl As New ADODB.Recordset, MyQry As New ADODB.Recordset
Set MyTbl = New ADODB.Recordset
Set MyQry = New ADODB.Recordset
Dim Goukei As Integer, Bangou As Integer, i As Integer
MyTbl.Open "T_KakakuKumiawase", MyDb, adOpenKeyset, adLockOptimistic
MyQry.Open "Q_Kakaku", CurrentProject.Connection
MyQry.MoveFirst
Do Until MyQry.EOF
Bangou = Bangou + 1
Goukei = 0
Do Until Goukei + MyQry![価格] > 700
Goukei = Goukei + MyQry![価格]
MyTbl.AddNew
MyTbl![番号] = Bangou
MyTbl![価格] = MyQry![価格]
MyTbl.Update
MyQry.MoveNext
Loop
MyQry.MoveFirst
For i = 1 To Bangou
MyQry.MoveNext
Next i
Loop

いじょ
レコードセットおぼえたての、トーシロの意見でした。
(ただこのやり方、単品で\700こえるものが、ひとつぐらい入ってないとエラーが出るみたい)
間違ってたらごめんなさい
587562:03/07/02 08:14
みなさん、ご親切にレスありがとうございます。
いろいろ試したり再度検索してみた結果、Win32APIを使った方法が最適だと
判断しました。
お世話になった582,565さん本当にありがとうございました。

参考までに・・・長くなりますけど、参考にしたコード載せておきます。
****************************************************************
Option Explicit

'(SHFileOperation)
Public Const FO_COPY = &H2 'ファイルのコピー
Public Const FO_DELETE = &H3 'ファイルの削除
Public Const FO_MOVE = &H1 'ファイルの移動
Public Const FO_RENAME = &H4 'ファイル名の変更

Public Const FOF_ALLOWUNDO = &H40 'ゴミ箱へ
Public Const FOF_CONFIRMMOUSE = &H2 '使えない
Public Const FOF_FILESONLY = &H80 'ディレクトリを含まない
Public Const FOF_MULTIDESTFILES = &H1 '
Public Const FOF_NOCONFIRMATION = &H10 '確認なし
Public Const FOF_NOCONFIRMMKDIR = &H200 'ディレクトリ作成時に確認なし
Public Const FOF_RENAMEONCOLLISION = &H8 '
Public Const FOF_SILENT = &H4 '確認なし。プログレスバーあり
Public Const FOF_SIMPLEPROGRESS = &H100 'ファイル名なし
Public Const FOF_WANTMAPPINGHANDLE = &H20 '

<<つづく>>
588562:03/07/02 08:15
Type SHFILEOPSTRUCT
hWnd As Long 'ウィンドウのハンドル
wFunc As Long '操作方法(FO_xxx)
pFrom As String '操作元のファイル名・ディレクトリ名
'複数の場合は Chr(0)で区切る
'最後は二つのChr(0)で終わる
pTo As String '操作先のファイル名・ディレクトリ名
fFlags As Integer '操作フラグ(FOF_xxx)
fAnyOperationsAborted As Long '処理完了前にキャンセルしたとき 1
hNameMappings As Long 'ファイルネームマッピングオブジェクトのハンドル(0 でもよい)
lpszProgressTitle As String 'ダイアログボックスのキャプション(ブランク可)
End Type
<<つづく>>
589562:03/07/02 08:16
Declare Function SHFileOperation Lib "SHELL32" (lpFileOp As SHFILEOPSTRUCT) As Long

Function LsFileCopy(source As String, destination As String, Optional fFlags As Integer = FOF_NOCONFIRMATION) As Long
'ファイルまたはフォルダをコピー
'(FileCopy ステートメントの拡張版)
' source : コピー元ファイルまたはフォルダ(サブフォルダごとコピーできます)
' destination : コピー先ファイルまたはフォルダ(フォルダがなければ作ってくれます)
' fFlags : FOF_xxxを指定(+で複数指定できます)
' 成功=0
Dim rc As Long
Dim lpFileOp As SHFILEOPSTRUCT

With lpFileOp
.hWnd = 0
.wFunc = FO_COPY
.pFrom = source
.pTo = destination
.fFlags = fFlags
.fAnyOperationsAborted = 0
.hNameMappings = 0
.lpszProgressTitle = vbNullString
End With

rc = SHFileOperation(lpFileOp)
LsFileCopy = rc
End Function

<<つづく>>
590562:03/07/02 08:16
Function LsKill(source As String, Optional fFlags As Integer = FOF_NOCONFIRMATION) As Long
'ファイルまたはフォルダを削除(ゴミ箱へ移すこともできます)
'(Kill ステートメントの拡張版)
' source : コピー元ファイルまたはフォルダ(サブフォルダごと削除できます)
' fFlags : FOF_xxxを指定(+で複数指定できます)
' 成功=0
Dim rc As Long
Dim lpFileOp As SHFILEOPSTRUCT

With lpFileOp
.hWnd = 0
.wFunc = FO_DELETE
.pFrom = source
.pTo = vbNullString
.fFlags = fFlags
.fAnyOperationsAborted = 0
.hNameMappings = 0
.lpszProgressTitle = vbNullString
End With

rc = SHFileOperation(lpFileOp)
LsKill = rc
End Function

<<つづく>>
591562:03/07/02 08:17
Function LsName(source As String, destination As String, Optional fFlags As Integer = FOF_NOCONFIRMATION) As Long
'ファイルまたはフォルダの名前変更
'(Name ステートメント相当)
' source : 名前変更前ファイルまたはフォルダ
' destination : 名前変更前ファイルまたはフォルダ
' fFlags : FOF_xxxを指定(+で複数指定できます)
' 成功=0
Dim rc As Long
Dim lpFileOp As SHFILEOPSTRUCT

With lpFileOp
.hWnd = 0
.wFunc = FO_RENAME
.pFrom = source
.pTo = destination
.fFlags = fFlags
.fAnyOperationsAborted = 0
.hNameMappings = 0
.lpszProgressTitle = vbNullString
End With

rc = SHFileOperation(lpFileOp)
LsName = rc
End Function

<<つづく>>
592562:03/07/02 08:18
Function LsMove(source As String, destination As String, Optional fFlags As Integer = FOF_NOCONFIRMATION) As Long
'ファイルまたはフォルダを移動
'(FileCopy ステートメントの拡張版)
' source : 移動元ファイルまたはフォルダ(サブフォルダごと移動できます)
' destination : 移動先ファイルまたはフォルダ(フォルダがなければ作ってくれます)
' 異なるドライブへの移動はできません。
' fFlags : FOF_xxxを指定(+で複数指定できます)
' 成功=0
Dim rc As Long
Dim lpFileOp As SHFILEOPSTRUCT

With lpFileOp
.hWnd = 0
.wFunc = FO_MOVE
.pFrom = source
.pTo = destination
.fFlags = fFlags
.fAnyOperationsAborted = 0
.hNameMappings = 0
.lpszProgressTitle = vbNullString
End With

rc = SHFileOperation(lpFileOp)
LsMove = rc
End Function
****************************************************************

終わりです。
長々と大変失礼しました。
>>562
ご苦労様。
このスレはログを保存しよう・・・・
594565:03/07/02 09:16
>562さん、おめでとう!凄いね…
実は私、リンクのデータmdbの最適化で詰まっていたので
プログレスバーと共に参考にさせていただきます。
(562さんのAPIの場合はファイルコピーみたいだけど)
562さんのデータ部は処理部とリンクされてるのかな?
私も諦めずにもうちっと頑張ってみるか…
>>565
ソースが長い。。
流し読みしたとことによると
最適化中の途中経過表示は不可という結論ですよね?

今日最適化中の途中経過の表示を実装しないAccessVBAを納品してきましたので
ちょっと気になってますw
(私は不可と判断した)
596565:03/07/02 22:56
>595
個人的には"最適化"中はAccess自体、テーブル等の表示をさせない(隠す)
ので"最適化"の途中経過は出来ないと思っています。
>>588-592をまだ試していないけれど、ソースをさっと見てみる限りコピーを
している時にコピーの進行状況を表示していると思われます。つまり、"最適
化"中の進行表示ではないと言うことですね。>>562でDBEngine.CompactDatabase
を使用したのは単にmdbのコピーのためで、最適化のためではないと思いますので…
てか、Access製品を納品するプロにトーシロの私が言うことはないと思いますが…

私は個人的にリンクテーブルの最適化に煮詰まってるので、何らか参考に
なればと思って時間が空いたらソースを実行してみたいと思っています。
私の場合、初回一度再リンクをしないと上手く最適化実行できないので…
再リンク動作を入れるか、最適化mdb選択ダイアログ出すか(;´Д`)ハァー
>>577
#めんどくさいからSQLはUPしないけど
クエリだけでするなら・・・
たとえばtblOnOffというテーブルを作って、値は0と1のみにしておく。
tblOnOffを4つ、デザインビューで並べて(リレーションはなしね)・・・
そしたら2の4乗(=16)個のレコードができあがるから・・・

で、それを元に、IIF(Filed1=1,"カレーライス","")みたいな列があるクエリを作れば・・・
598578:03/07/03 00:22
>>584
回答、ありがとうございます。
5人までって言うのは、どこかで何かと見間違えたのかも知れません。

ついでに別件を質問させてください。>ALL
ADPでSQLを使って抽出したデータをtxtファイルにエクスポートしたいのですが、
良い方法はありませんでしょうか?MDB時はSELECT * INTO [Text]〜で行って
いたのですが、ADPでは出来ないようです。エクスポートの処理時間を重視した
方法は無いでしょうか?

更に、ストアドプロシージャについてですが、
( @検索内容 char

AS
********* (←何が書いてあるか忘れた)
select * from DB where @検索内容
return

のように、WHERE句のWHERE以降を文字列でパラメータ設定したいのですが
出来ませんでした。これも何か良い方法はありませんでしょうか?
よろしくお願いします。
長文失礼しました。
>>598
exec ('select * from DB where ' + @検索内容)
みたいに記述すればおけー
600名無しさん@そうだ選挙にいこう:03/07/03 13:51
ACCESS2000で詰まっています。よろしくご教授ください。

連結オブジェクトフレームのあるフォームで、
コマンドボタンをクリックすると「ファイルを開く」ダイアログが開き、
そのダイアログで選択した画像を、そのフレームに挿入する、
(メニューの『オブジェクトの挿入』→『ファイルから』と同じようなことです。)

ということをVBAで実行したいと思っているのですが・・・


以前こちらで教えていただき、「ファイルを開く」ダイアログを開くことと、
そして、選択した画像ファイルのフルパスを取得するところまでできました。

 Private Sub 画像を開く_Click()
 Dim OBJ As New Excel.Application
 Dim PHOTO As String
 PHOTO = OBJ.GetOpenFileName("jpeg ファイル (*.jpeg;*.jpg), *.jpeg;*.jpg")
  (ここまでで、ファイルを選択してOKをクリックすると変数「PHOTO」にそのファイルのフルパスが格納されます。)

ところが、その選択した画像をフレームに表示させるための記述が分かりません。
ご存知の方がみえましたら、教えていただけないでしょうか。
601578:03/07/03 21:36
>>599
ありがとうございます!
それでやってみます。
602_:03/07/03 21:48
いまさらながらですが、
開発環境がやっと 97 から 2000 になったのだが、
97 のプロシジャにあった 右クリック→ビルド って
2000 にはないのだがどこにいった?
604名無しさん@そうだ選挙にいこう:03/07/04 02:02
私が作りました!見てね♪
http://nuts.free-city.net/index.html
605574:03/07/04 04:52
>579さん、ありがとうございました。
「更新後処理とDlookup」で値を取得することができました♪

が、まだAテーブル(商品マスター)の価格変更の履歴の残し方が分かりません。
価格が変更された時点で、自動的に日付を取得して古い方の値を残したいのです

価格更新履歴テーブル
  商品ID、更新日、価格
とかやって見たものの、そこから先に進めません。
>>603
97で作業をすることが無いので、いまいち何を言ってるのか分からんが、
例えば、フォームをデザインモードで開いてコントロール上で右クリックすれば
イベントのビルドってメニューは普通に出るぞ。
>>603
ってか、イベントのところで該当イベントを左クリックすると
空欄の右側に「…」と言う四角が表示されるので、それをクリッ
クすれば「式ビルダの選択」が出るけど…それじゃないの?
そのまま該当イベントの空欄で「イベントプロシージャ」を
選択すればVBAの画面が開くんだけれど…?
608603:03/07/04 10:19
わかりずらくてスマソ
>>607
そのVBAの画面で、
フォームなどののコントロールを簡単に指定出来るヤツ
(式ビルダ?)が2000には無いのでしょうか?

フォーム
 →F_Main
  →Code
   →Caption みたいなヤツ
609607:03/07/04 11:07
>>608
自分もかつて97使ってたけれど、その辺2000に転向した当初迷ったよう
な気がするなー(でも遠い記憶だ)
クエリーとかにも使う2000での「式ビルダ」のことかな?
ちなみにVBAウィンドウ(コードを自分で記述する)画面そのものの中では
Access97でもそんな機能はなかったように思うんだけど?私が使わなかっ
ただけなのかな?97には2000の「式ビルダ」がVBAウィンドウの中にあったの?
2000では.とか入力した時に、候補コードが自動的に出てくることがあるけど。
よく分からないから、これ以上は力になれんなー

ないようだったら、諦めてくれ…
>>603
これのことかな?

コードウィンドウの上にある、オブジェクトボックスとプロシージャボックスで、
コントロールとイベントが自動で作成されるけど。

以下ヘルプコピー

****************************************************************************
[オブジェクト] ボックス

選択されたオブジェクトの名前を表示します。リスト ボックスの右端の矢印をクリックすると、
フォームに関連付けられているすべてのオブジェクトの一覧が表示されます。

[プロシージャ] ボックス

[オブジェクト] ボックス内のフォームまたはコントロールに関連付けられた、Visual Basic
で認識可能なイベントがすべて表示されます。イベントを選択すると、そのイベントに対応
したイベント プロシージャがコード ウィンドウに表示されます。

611607:03/07/04 13:21
>603 >>610から察するに
VBAウィンドウの表示(V)→オブジェクトブラウザ(O)
多分これのことでは?
自分は使い勝手が悪いので使ったことがないが…
>>603
こちらへどうぞ(泣かないでね…)
ttp://support.microsoft.com/default.aspx?scid=kb;ja;245181
613603:03/07/05 09:42
>>612
ガ━━(゚Д゚;)━━ソ!
まさにこのことをいってたんでつ・・・
みなさんありがとうございますた

フォームのテキストボックスなどの
コントロールはひたすら入力するしかない
ってことかな(´・ω・`)ショボーン
614574:03/07/05 12:28
あたた、603のインパクト(?)に負けて
605の質問がスルーされてる気配…
とは言え、解決できたんですよ♪
もーうれしくてね。
結局「価格」が更新されたら「更新後処理」で
価格更新履歴テーブルに追加クエリで追加すれば良かったんですね。
615612:03/07/05 22:25
>>613
でもね、"Me."と入力すればテキストボックスなどの
名前はペロッて出るから選択すればいいんじゃないの?
>>615
なんか、説明のしかたがつぼにはまった
617名無しさん@そうだ選挙にいこう:03/07/06 00:06
クエリの日付のグループ化で
01/09/11
01/09/16
01/09/11

01/10/11
の場合
01/09
01/10
みたいにしたいのですが・・・
みたいに年月でグループ化したいのですが
教えてください

普通にグループ化すると日付でグループ化してしまい
01/09/11
01/09/16
01/10/11
みたいに年月日でグループ化してしまいます
>>617
クエリで年月のフィールドを作ってグループ化しれ
619名無しさん@そうだ選挙にいこう:03/07/06 00:21
>>618
>クエリで年月のフィールドを作って
テーブルにある日付の年月日を
年月だけで作るのでしょうか?
それがよくわからん。というか思いだせん
>>619
色々方法はあるけど全部1日にする方法

 年月: DateSerial(Year([フィールド1]),Month([フィールド1]),1)
621名無しさん@そうだ選挙にいこう:03/07/06 00:33
>>620
どうもです
>>617
日付フィールド名:Format([テーブル名]![日付フィールド名],"yy/mm")
でグループ化してみたらどう?
もしVBAにお詳しい方がいらっしゃいましたら
>>600へのご回答もお願いします。

質問の意味が分からなければ、言っていただければ説明しますので。
624名無しさん@そうだ選挙にいこう:03/07/06 00:38
AccessでExcelみたいに関数を使うのって可能でしょうか?
[死亡年]-[誕生年]みたいに計算したいのですが・・・
625名無しさん@そうだ選挙にいこう:03/07/06 01:32
>>600 >>623
画像って全くやったことないので良く分かりませんが、

フレームに表示させる方法は分からないけどイメージ コントロールに表示するなら、

 イメージ1.Picture = PHOTO

 (ファイル選択をキャンセルした時などの細かい処理は後で書くとして)

で表示するね
フォームに表示するだけならこれでも・・・
>625
ありがとうございます。

ただ、取得した写真をフォームに置くだけでなく、レポートに使用したい
(目的は写真入に名札作りなんですが)ので、
どうしても、連結フレームに入れる必要があるのです。

Pictureプロパティの設定は、やってみたんですができませんでした。
>>626
フォームのレコードソースとなるテーブルに,イメージを入れる
フィールドは作ってありますか。
>627
はい、作ってあります。

ただ、実際に画像を入れたレコードをテーブルで見てみると、
すべてのレコードで「MicrosoftPhotoEditor3.0 イメージ」と表示されています。
)624
Accessにも関数はありますよ。ただ、Excelとは微妙に違いますのでご注意。
(例えばExcelの「If」がAccessだと「IIf」になっていたり)
クエリのフィールドやフォームのテキストボックスで式ビルダを開けば関数の一覧が見られます。

ただ、ご例示されている年数計算だけなら、関数を使わなくとも四則演算で済みそうですけどね。
>>600
OLEオブジェクト型ってjpgをbmpで保存してる感じで容量を食うので、
自分は好きじゃないな
試しに約100KBytのjpgを保存すると約7MBytになる
(名札の写真はそんなに大きくないだろうけど)

イメージ コントロールでもレポートに使用できるよ
(テーブルにはパスを保存)
631名無しさん@そうだ選挙にいこう:03/07/06 15:42
★★★ 完全無修正のエロエロサイト ★★★
http://upbbs.s2.x-beat.com/linkvp/linkvp.html

 ↑ 
このサイトマジやば! 早く見ないと消されちゃうかも・・・
アクセスでグループの中央値を求めるにはどうすればいいんでしょうか。

平均値や最大値だったら一発ですけど、中央値の場合は?
エクセルだったらMEDIAN関数を使えばいいんでしょうけど……。
フォームの背景をローカルディスクにある画像に指定したら、ファイルサイズが一気に大きくなりました。
Accessって、背景を設定するとAccessファイルの中に画像を取り込むんですか?
元のサイズいじっても、もう一度フォームのプロパティから設定しなおさないと更新されないし・・・
>>637
プロパティの書式タブでピクチャタイプが
「埋め込み」になってると思うので、「リンク」に変更。
>>633
あれ、なぜか急にアクセスできなくなった……。
俺だけ?
637578:03/07/07 22:57
>>584
MSDEが接続5人で最適化って言うのは、ここで見つけました。
http://www.zdnet.co.jp/help/howto/win/win2000/0007special/complus_vb/chap3/13.html

で、接続ってOpen時なのかUpdate,Delete等の瞬間なのか、どっちなんですか?
638名無しさん@そうだ選挙にいこう:03/07/07 23:33
Access2000, Windows2000 です。
クエリ(というよりはSQLでしょうか)の作成で質問があります。

-------------------------------
商品名,  購入時期(YYYY/MM/DD),
-------------------------------
A    2003/01/01
B    2003/01/11
C    2003/01/21
D    2003/01/31
E    2003/02/01
A    2003/02/11
B    2003/02/21
C    2003/03/01
D    2003/03/11
E    2003/03/21
A    2003/03/31
B    2003/04/01
-------------------------------
このテーブルレイアウトを元に色々な検索条件を指定した画面を作って
動作確認をしているのですが、今、
「購入時期From」、「購入時期To」、「購入時期Range」を画面上で指定して
その結果を出す方法がわからず詰まっています。


639名無しさん@そうだ選挙にいこう:03/07/07 23:33
>>638続き
イメージとしては、例えば
「購入時期From」 = "2003/1/21"
「購入時期To」  = "2003/3/05"
「購入時期Range」= "10"日を指定したとき
-------------------------------
購入時期(YYYY/MM/DD),購入商品数
-------------------------------
2003/01/21〜2003/01/30  1
2003/01/31〜2003/02/09  2
2003/02/10〜2003/02/19  1
2003/02/20〜2003/03/01  2
2003/03/02〜2003/03/05  0
-------------------------------
のような表をつくることを考えています。

例えば、A,B,Cそれぞれの商品をどれだけ購入したかを検索するには
SELECT 商品名, COUNT(商品名) FROM テーブル名
GROUP BY 商品名

いつ、どれだけ購入したかを検索するには、2003/02/01〜2003/03/01なら
SELECT COUNT(商品名), 購入時期(YYYY/MM/DD) FROM テーブル名
GROUP BY 商品名
HAVING 購入時期(YYYY/MM/DD) Between #2/1/2003# And #3/1/2003#

画面で指定したパラメータを渡す必要もありますし、
こういう基本的なSQLとは全然違ってくる気もしてるのですが、
どなたかご教授願えないでしょうか。
どうぞよろしくお願いします。

640名無しさん@そうだ選挙にいこう:03/07/07 23:42
クエリで
フィールド1に生年月日
フィールド2に死亡年月日
を入力した時に
クエリ3にその人物の年齢を出し、
またフィールド2に何も入力されていない時は
現在の年齢を出したいのですが
どうすればいいのでしょうか?

単純に[フィールド2]−[フィールド1]だとその期間の日数が出てしまいます

お願いします
641638,639:03/07/07 23:59
>>640
ACCESS 年齢計算でググってみたらどうでしょう?
642584:03/07/08 00:04
>>637
cn.Open時です。(ADODB.Connection)

>MSDEが接続5人で最適化って言うのは、ここで見つけました。
かなり前のことでページは忘れましたが、実際に実験したデータがあり、5人というのはあまり
根拠のないものとかいうのを読んだことがあります。
私も10台くらいで実験しました。
しかし保障されたものではありませんので、お客様には提案時、
「パフォーマンスが悪化した場合はSQL Serverを買ってください」
とお願いしています。

Access2.0の頃から、メーカーが言ってることや雑誌で読んだことなどがあてにならなくて
苦労したので、使用前によくテストするようにしています。
>>640
ググると年齢算出のユーザー関数が出てくるので、
そのユーザー関数の「実行日」を条件分岐で
1.フィールド2に値がある場合は「実行日」をフィールド2に
2.フィールド2に値がない場合は「実行日」を本日にすれば
出来ると思う。
クエリーにもユーザー関数(ファンクション)を使用する
ことが出来ます。モジュールにファンクションを書いて
クエリーのフィールドや条件抽出に使用することが出来ます。

あるいは日数が出ていれば365日で割ればとりあえず
年数が出ると思うのですが…(正確かどうかはわかりませんが)
>>642
以下のページでMSDEの同時5台以上接続時のパフォーマンスを検証しています。
http://www.akizuki.co.jp/msde/
問題なさそうですね。
646名無しさん:03/07/08 14:27
>>638
それはかなり難しいクエリになりそう。素人には恐らく出来ないと思われ。
>>640
DateDiff関数を使えば一発なり。
648名無しさん@そうだ選挙にいこう:03/07/08 14:31
(;´Д`)感動した
http://homepage3.nifty.com/coco-nut/
>>638
集計用の一時テーブルを作っておいて、購入時期Range毎にSQLを発行して追加する。

こんなVBAでまわす。
Dim dteFrom As Date
Dim dteTo As Date
dteFrom = #1/21/2003#
Do Until dteFrom >= #3/5/2003#
dteTo = DateAdd("d", 10, dteFrom)
Debug.Print dteFrom & " " & dteTo
'ここでSQL発行
dteFrom = DateAdd("d", 1, dteTo)
Loop
修正
Dim dteFrom As Date
Dim dteTo As Date
dteFrom = #1/21/2003#
Do Until dteFrom >= #3/5/2003#
  dteTo = DateAdd("d", 10, dteFrom)
  If dteTo > #3/5/2003# Then
    dteTo = #3/5/2003#
  End If
  Debug.Print dteFrom & " " & dteTo
  'ここでSQL発行
  dteFrom = DateAdd("d", 1, dteTo)
Loop
>>638
(From-To+1)\Rangeでグループ化する
652638,639:03/07/08 23:49
>>649-650
回答有難うございます。やはり簡単にはいかないみたいですね。
ある範囲を持ったブループ単位で、その範囲をパラメータとして
外から(呼ぶプログラムから)指定できるようなクエリーが作れないかと
頑張ってたのですが、回答を見るとロジック勝負みたいですね。
ロジックは自分で考えないとダメですが、
回答の方法がスマートなのでそのまま利用させていただきます。

DateAdd関数は日だけでなく、月、年単位の幅設定もできるようなので
試したいと思います。

>'ここでSQL発行
色々ググって参考ページをみましたが、SQLをプログラム内で書くと
Dim db As Connection
Set db Application.CurrentProject.Connection
などと、この一行を実現するのにお決まりの約束事?など
かなり面倒な作業が必要になりそうですね。

これ(INSERT)を実行する前提として、テーブルをプログラム中で
検索する度に毎回CREATE&DROPする必要があるでしょうか。
一時テープルだとしても事前に作成しておいたほうが楽そうですね。
でも検索する度に毎回DELETE&INSERTならどちらも変わらないかも
しれませんが・・・

時間がかかりそうですが、こちらも色々試してみたいと思います。

>>651
回答有難うございます。つまるところ私のやりたいことの
究極の一手にも見えますが、簡潔すぎて取っ掛かりがつかめません・・・
「\」って一体・・・
653651:03/07/09 03:52
>>652
\は演算子。
10\3というのは10÷3をしたときの「商」で、「3」になる(はず)
>>652
>SQLをプログラム内で書くと
これはVBA(プロシージャ)内でって言うことでしょうか?
どんなSQL文か良くわからないけれど、テーブル作ったり
と言うものならば、いつも私はDoCmd.RunSQL (strSQL)とか
使っていますが…
これだとstrSQLに値するSQL文をフォームのコントロールの
値によって条件付けて変化させることが出来るので重宝してます。

例えば、開始日付を変数で持ちループで、DateAddで終了日付を
10日後に設定し期間内のデータを一時テーブルに吐き出せ(追加)ば、
希望に近いテーブルが作成されるのではないかと…ループの次の
開始日付は変数で持った開始日付+11日で終了はその+10日。
ループの終了条件をどう判定するかは分かりません(自分のことで
はないので考えていない)…想像だけなので何とも言えませんが。
655649:03/07/09 09:41
>>652
SQL Server(MSDE)で処理されるのですね。
私なら以下のようにします。
1. フォームを表示するときに一時テーブルをCREATE(テーブル名の頭に#を付ける)
2. 検索毎にDELETE&INSERT
3. フォームを閉じるときにDROP
クライアントにトラブルが発生しても、接続が切れれば一時テーブルが
サーバーから削除されるので扱いやすいです。

>>653
購入日とRangeで計算して商や余を使う方法も考えたのですが、レコードが存在しない
2003/03/02〜2003/03/05の購入商品数 0はどのように処理するのですか?
656654:03/07/09 09:42
649,650さんがやってることだね…重複してしまった…スマソ

例)strSQL=…(InsertやSelectなどのSQL文の冒頭)
strSQL = strSQL & "<=#" & DateAdd("d", -1, DateSerial(Forms!フォーム名!コントロール名, Forms!フォーム名!コントロール名 + 1, 1)) & "#<=(テーブル名.フィールド名)) AND …
と言うようにSQL文に組み込むことが可能です。
購入時期Rangeをフォームの値によって変化させることが
可能かまでは不明ですが。(DateSerial()はフォーム上の値で
年月日を別コントロールに入れた場合で638,639さんには不要)
657名無しさん@そうだ選挙にいこう:03/07/09 11:03
>>638,639
651氏がいうてるように、

select datediff(dd,'2003/1/21',購入時期)/10 ,count(*)
from T1
where 購入時期 between '2003/1/21' and '2003/3/1'
group by datediff(dd,'2003/1/21',購入時期)/10

結果

----------- -----------
0 1
1 2
2 1
3 2

(4 件 処理されました)

まずここからいろいろ肉付けしていってみ。
658名無しさん@そうだ選挙にいこう:03/07/09 11:03
☆頑張ってまーす!!☆女の子が作ったサイトです☆
       ☆見て見て!!
http://yahooo.s2.x-beat.com/linkvp2/linkvp2.html
659649:03/07/09 11:50
>>657
651,657さん案のグループして集計したものと購入時期だけのテーブルをリンクするなり、
足りない行を付加したレコードセットを作ればできますね。
SQLの発行はできるだけ減らすほうがよいので、こちらをベースに検討すべきです。
すげーなー…人事だけど勉強になる…
6611:03/07/09 12:57
1です
続けてスレ立てだけしています
この板の回答者さん達は非常に親切かつスキルが高くてすごいなと思っております
最近、仕事が忙しいのとaccessから離れていたため、殆ど参加しておりませんでした。時々、簡単な質問のみ答えていました
近々、「名無しさん」で私の分かる範囲でしたらお答えいたします
では
>>654
細かいことだけど、DoCmd.RunSql (SQLString)は非同期動作だし、確認メッセージ消す手間もあるんで
CurrentDB.Execute (SQLString), dbFailOnError
をおすすめするです。
なるほろ、MSDEで外部と接続ありならその方が楽〜
確認メッセージ消す手間…DoCmd.SetWarnings Falseで
通常、ほとんどのメッセージを殺してしまうと言う手もある

でもスタンドアローン状態の自mdb内処理ではないなら
CurrentDB.Execute (SQLString), dbFailOnErrorの方が良いよね
あ、1さん、ご苦労様です。
いつもこのスレ、お世話になっています。
(質問したことはないけど)
これからもよろしく〜
665名無しさん@そうだ選挙にいこう:03/07/09 18:08
MSDEで開発している人に朗報
SQL Server 2000 Developer Editionが8月1日から8,800円に価格改定。
開発者用なので実際の業務には使えませんが、MSDEでの開発、テストが楽になりますね。
http://www.microsoft.com/japan/presspass/detail.aspx?newsid=1632

666名無しさん@そうだ選挙にいこう:03/07/09 21:34
ストアドプロシージャの使い方がよく分かりません。。。
どこか分かりやすいサイトないですかね?
>>666
MSのWebサイトから Microsoft SQL Server 2000 Books Online(SP3)を
ダウンロードできるので、それに目を通そう
他の人の Webサイトは*基本がわかっている人*を前提に書かれているよう
なので、初めて学習する人には辛いのではないかと思う(いや、そういう
サイトしか見ていないだけかもしれないけど)
>>661
テンプレート周りの見直し&修正宜しく。

by スレ立てから降りた人
>>668
アプリの基本操作に関する質問は、初心者スレ誘導がいいんじゃねえかと・・・・・・
せっかく分けたんだし。
>>669
スレのカバーする範囲を"どこからどこまで"と明確に切り分けできれば
いいんでしょうけど、難しくないですか?線引きが。

ム板にも Accessスレがありますし、DB板にも新たにできてしまったし
これからスレの住み分けをどうするんだろう?と、かなり疑問が。
671638,639:03/07/10 03:46
回答下さった皆様、本当に有難うございます。
SQL Server(MSDE)・・・これが何だかまだ調べてませんが、
今やってるのはVBAでのイベント内の処理です。
何か仕事で開発してる訳ではなく個人的に色々と検索処理を
試している状況ですので本格的な回答にはちょっと恐縮してます。

個別にレス出来ませんが、せっかく手をつけたので
まずは>>649-650>>655を出来るようにしたいと思います。
その後、キタ━(゚∀゚)━!!!!と思われる>>657をベースに
改善してみたいと思います。
where句とgroup by句が併用できるとは気づきませんでした。
group byでまとめたら後はもうhavingで絞り込むだけのものと
思い込んでました。

SQLを記述するならdbFailOnErrorでエラー時対策も必要ですか。
ちょっと凝り出すとAccessは奥が深いですね。地道に頑張ります。
6721:03/07/10 08:44
>>668-669
私も少し思っていました
このスレが終わるまでに、テンプレ周りの見直しを考えてみます
また、殆どの質問及び回答がVBA、SQL発行関係になっていますので棲み分けが必要ですね
あとは簡単な誘導ですね
6731:03/07/10 08:49
>>670
私が思っているのは、VBA周りが主の板でいいのかな?という感じです
少し前の板を見直すと大体がVBAメインの話(処理方法)が多いように思います
初期の頃は、本当に幅広く何でもアリでしたけど
674名無しさん@そうだ選挙にいこう:03/07/10 09:40
 Postgresを運用し、ODBCを経由しフロントエンドにAccessを使おうと
思っています。
 ここで質問ですが。。このようにフロントエンドにAccessを使う場合、
Accessのみを使う場合と比べて制約があるでしょうか?
(実はDBデータはAccessで作って、pgAdminIIでpostgresにデータを移し
ました。リレーションなどの情報がなくなっていました。)
 DBのデータ(テーブル?)だけを別のRDBMに移して、普通にAccessで
できていたこと(クエリやフォームなどを使う)をできるようにしたい
んですが。。

 ご面倒ですが、なにかアドバイスがありましたらお願いいたします。
>>674
Postgresとは Postgres95 - PostgreSQLの母体となったDBMSです。
多少でもソフトウェアに係わる身なれば呼称はキチンと使いわけて
頂きたいものです。

# 用語の乱用は誤解を招く元なり
677名無しさん@そうだ選挙にいこう:03/07/10 10:24
 WinNTSP6a+IE5.5SP2 の環境に、Office2000ProSP3 の
Access2000(9.0.6926)を導入しています。
テーブル間に参照整合性制約+連鎖更新を設定するクエリを、ヘルプを
頼りに以下のように記述しました。

ALTER TABLE tbl_hoge
ADD CONSTRAINT fkey_hoge_fkID
FOREIGN KEY (fkID) REFERENCES tbl_foo(ID)
ON DELETE CASCADE;

上記クエリを実行(保存)しようとすると、
「CONSTRAINT 句の構文エラーです。」
という警告が表示され、実行できないのです。

 "ON DELETE CASCADE" を削ったり、
"REFERENCES tbl_foo(ID) ONDELETECASCADE"
と第二引数(?)に意味のない文字列を与えた場合は、
参照整合性制約だけは作成されることを確認しています。

 クエリで参照整合性制約+連鎖更新(削除)を設定する
方法についてご存知の方いらっしゃいましたら、お知恵を
お分けください。よろしくお願いします。
678677:03/07/10 10:26
すみません、>677 の
>テーブル間に参照整合性制約+連鎖更新を設定するクエリを
は、連鎖削除を設定するクエリの間違いでした。
680名無しさん@そうだ選挙にいこう:03/07/10 10:39
>675,676
MS-Accessをフロントエンドにして、PostgreSQL ODBCドライバを使って
PostgreSQLにアクセスしています。

 例えばODBC経由ではリレーションの「参照整合性」をチェックできませ
ん。これって、仕様ですか?
>>677-678
当方、Windows2000Pro.(SP4) + Access2002 SP-2にて確認を取りました。
テーブル/クエリを ANSI SQL89準拠モード及びANSI SQL92準拠モードで
試行しております。
クエリ
 MDBファイルANSI SQL89準拠: CONSTRAINT句の構文エラー つまりNG
 MDBファイルANSI SQL92準拠: 正常終了

VBA
 ADO & MDBファイルANSI SQL89準拠: 正常終了
 ADO & MDBファイルANSI SQL92準拠: 正常終了
 DAO & MDBファイルANSI SQL89準拠: CONSTRAINT句の構文エラー
 DAO & MDBファイルANSI SQL92準拠: CONSTRAINT句の構文エラー

以上の結果です。
さしあたって、Access2000において ON 〜 CASCADEを正常に処理するには
VBAかつADOにて実行しなければならないのではと推測しますがいかがでしょう?
683名無しさん@そうだ選挙にいこう:03/07/12 15:29
大至急ヘルプです!!

テーブルで主キーにオートナンバー型を指定していて
例えば順番に 1、2、3、4 と順番に並んだ主キーがあるとして
主キーが 4のレコードを削除して次にレコードを作成すると
主キーは5になりますよね。

これなんらかの方法で 4 でレコードが作れたと思うんですが
どうすればよかったですか?
一度だけその削除されたレコードの主キーの情報を
消すことができればいいだけなんです。

運用中のデータベースでこれを行うのではなくて
作ってる途中で誤ってレコード削除してしまって
数自我ならば無くなってしまったんです。

まぁ、細かいことなので気にしなければいいんですが
なんか方法無いですか>
684名無しさん@そうだ選挙にいこう:03/07/12 15:34
主キーフィールドを一度削除して
作り直したらいけました。

それ以外の方法もあれば教えてください
685名無しさん@そうだ選挙にいこう:03/07/12 15:36
http://members.tripod.co.jp/poponss/itiran.html
おすすめ懸賞・お小遣いサイトを紹介しています。
あんまり関係ないけど、
CurrentDb.Execute "追加クエリ" で
原則1から始まるオートナンバー型フィールドに、0を突っ込むこともできるんだね。

どうでもいい話なのでSAGE
687名無しさん@そうだ選挙にいこう:03/07/12 18:31
A列 |
-----
-21 |
-25 |
-30 |

という感じで、マイナスのデータしかない列を-を外した数値にして
別の列にコピーしたいんですけど、できますか?

A列 | B列
----------
-21 | 21
-25 | 25
-30 | 30

って感じにしたいのです。
688名無しさん@そうだ選挙にいこう:03/07/12 19:05
更新クエリーでできる。[A列]*-1 で更新せよ。
689名無しさん@そうだ選挙にいこう:03/07/12 20:15
>>688
できました!ありがとうございます。
690687:03/07/12 21:01
度々すいません。
これをテキストでエクスポートすると、A列は -21 でエクスポートされるんですけど、
B列が 21.00 ってなってしまいます。

テーブルだったら、データ型をテキストにすればいいと思うんですけど、クエリの場合
データ型を設定する所がわかりません。



       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |
   ヽノ    /\_/\   |ノ  ________
    ゝ   /ヽ───‐ヽ /  /
     /|ヽ   ヽ──'   / <この新機能どうよ?
    / |  \      ̄ ,/|   \  
   / ヽ    ‐――‐        \________
ttp://f7.aaacafe.ne.jp/~bobsap/phpup/img/285.bmp
692687:03/07/12 22:22
自己レス
エクスポートの定義でデータ型を設定したらいけました。
ここは、かろうじて、まだ夏休みじゃないみたいだね・・・・
694名無しさん@そうだ選挙にいこう:03/07/14 23:42
ACCESS97のVBAで作成したテキストデータをメールで送信するアプリを作ってます。
アウトルックエキスプレスでデータ添付済みの送信メールを作りたいのですが、添付まで出来るいい方法がみつかりません。

現段階のコードはこんな感じです。
Dim lngReturn As Long
Dim strCommand As String
Dim strSubject As String
Dim strBody As String

strCommand = メールアドレス
strSubject = 件名
strBody = 本文

If LCase(Left(strCommand, 7)) <> "mailto:" Then
strCommand = "mailto:" & strCommand & "?subject=" & strSubject & _
"&body=" & strBody
End If

lngReturn = ShellExecute(Me.hWnd, _
"open", _
strCommand, _
vbNullChar, _
vbNullChar, _
SW_SHOWNORMAL)

何とか良いOEでの添付メール作成の方法ないでしょうか。。
695山崎 渉:03/07/15 11:15

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
696677:03/07/16 00:24
>682
ありがとうございます。出来ました!!
まず以下のような関数を作成しました。脳ダンプなので間違っているかもしれませんが…

Function execSQL(strSQL as String)
 Dim objCn as ADODB.connection
 Set objCn = CurrentProject.Connection
 objCn.Execute(strSQL)
 objCn.Close
 Set objCn = Nothing
End Function

これをマクロで呼び出し、引数に >677 のクエリを渡すと、思ったとおりの制約が
作成されました。
697677:03/07/16 00:25
 ただ、もう一つ些細な疑問が出来てしまいました。
 始め >696 の Connection.Execute の結果を
execSQL=objCn.Execute(strSQL)
と戻り値として返していたのですが、こうすると制約はきちんと出来上がるのですが
「型が違います」という旨のエラーが出て、実行を停止してしまったのです。
 ためしにこれを呼び出すだけのサブルーチンを作成し、VBAEditorでサブルーチンを
実行させると正常に動作したのですが、これはマクロ実行のときにレコードセットを
返させたのが原因だったのでしょうか。
 時間が無かったのでこれ以上追求はしませんでしたが、気になるのでご存知の方、
宜しければ教えてください。
698名無しさん@そうだ選挙にいこう:03/07/16 15:20
ACCESSのOLEオブジェクト型を利用してjpgを保存し、
それを他のアプリケーションで利用しよう思っています。

しかし、OLEオブジェクト型にJPGファイルを挿入するときに
INSERT文を利用したいのですがそのやり方がわかりません。

どなたか教えてください。
699ぷりん:03/07/16 16:03
すみません、教えて下さい。

WinMe ACCESS2000 です。

aaa.csvをインポートしてbbb.csvにするには、
どうしたらよいのでしょうか?

↓aaa.csv
HD,000001,20030716,20030717
BD,1,11111,商品1,10
BD,2,22222,商品2,20
TL,30
HD,000002,20030716,20030717
BD,1,11111,商品1,30
BD,2,22222,商品2,40
TL,70

↓bbb.csv
HD,000001,20030716,20030717,BD,1,11111,商品1,10
HD,000001,20030716,20030717,BD,2,22222,商品2,20
HD,000002,20030716,20030717,BD,1,11111,商品1,30
HD,000002,20030716,20030717,BD,2,22222,商品2,40


データ(aaa.csv)の説明
・ヘッダ、ボディ、テイルに分かれている。
・HD(ヘッダ)、伝票番号、出荷日、納品日
・BD(ボディ)、行番号、商品コード、商品名、数量
・TL(テイル)、合計数量
各ボディにヘッダを付けて、テイルを無視してbbb.csvに出力

700_:03/07/16 16:17
701_:03/07/16 19:37
>>699
おいらなら、aaa.csvをperlかawkかsedで整形する。整形してインポートしたら選択クエリでテイルとやらを無視してエクスポート
>>699
Access 向けのお題じゃないよ。
ほんとに Access しかないなら、VBA で処理すりゃいいだけ。

Option Explicit

Sub Main()
 Dim InFile As Integer, OutFile As Integer
 Dim Item() As String, SlipNo As String, ShippingDate As String, DeliveryDate As String
 Dim Line As String

 InFile = FreeFile
 Open "aa.csv" For Input As #InFile
 OutFile = FreeFile
 Open "bb.csv" For Output As #OutFile
 While Not EOF(InFile)
  Line Input #InFile, Line
  Item = Split(Line, ",")
  Select Case Item(0)
  Case "HD"
   SlipNo = Item(1): ShippingDate = Item(2): DeliveryDate = Trim(Item(3))
  Case "BD"
   Print #OutFile, "HD," + SlipNo + "," + ShippingDate + "," + DeliveryDate + ",BD" + Item(1) + "," + Item(2) + "," + Item(3) + "," + Item(4)
  Case "TL"
  Case Else
   MsgBox "識別子が変だよ: " + Line
  End Select
 Wend
 Close #OutFile
 Close #InFile
End Sub
704名無しさん@そうだ選挙にいこう:03/07/16 23:25
素人板にもカキコしたが・・・・

Access で Excel の関数を使う方法

http://www.asia.microsoft.com/japan/enable/training/kblight/T005/2/13.htm

見てみそ!

なぜAccessを使わなければならないか、理由をまず教えてくれ。
便利だから
707699:03/07/17 08:31
>>703
ありがとうございます。

>Access 向けのお題じゃないよ。
別の板で質問してきます。すみませんでした。
708名無しさん@そうだ選挙にいこう:03/07/17 15:32
お伺いします。

WIN2000でACCESS2002を使っています。

データをCSVでエクスポートすると日付の元ファイルの「2003/7/17」がCSV上で「2003/7/17 0:00:00」となってしまっています。
書式は 日付 (S)、定型入力0000/00/00;0;_  です。

お力をお貸しください。
>>708
メモ帳でCSVを開いてもなる?
ならなければExcel側の問題では?
>>708
Format(日付フィールド,"yyyy/mm/dd")をつかえ
711名無しさん@そうだ選挙にいこう:03/07/17 16:00
>>709
エクセルは使用していません。
エクスポートのプレビュー時にすでに変わってしまっています。
712名無しさん@そうだ選挙にいこう:03/07/17 16:05
>>710

亀レスすみません。
ありがとうございました。解決しました。
713名無しさん@そうだ選挙にいこう:03/07/19 00:51
ストアドプロシージャでSQLを丸っと発行できる記述式を教えてください。

(
@パラ
)

as

exec(@パラ)
return

パラをフォーム上のテキストボックスにして、コマンドボタンを押すと
SQL文を発行します。
↑じゃダメだよね。
714名無しさん@そうだ選挙にいこう:03/07/19 01:04

Access97でバーコードコントロールを使いバーコードを印字してます。
コントロールソースに印字したいバーコードのデータを入れるようにしてるのですが、
いつの間にか、そのコントロールソースに書いたものが消えてしまいます。
きちんとコントロールソースに式を書いて保存するのですが、他の
作業をした後にまた見ると消えていたりします。

なにかいい解決方法は無いでしょうか?
715名無しさん@そうだ選挙にいこう:03/07/19 01:26
めちゃくちゃ可愛い子が脱いでしまった、、、無修正で☆
http://www3.free-city.net/home/espresso/princess/peach.html

きれいな人妻がまってるよ!コギャルやOLも!
http://www3.free-city.net/home/espresso/au/sweety.html
716名無しさん@そうだ選挙にいこう:03/07/19 01:36
>>714
テーブル作ってそっちに保存したら
どうかね?
バクのあったバーコードコントロール使ってないか?
こっそりMSが対応したやつ。
719初心者:03/07/19 18:37
初心者質問ゴメソ!

win98、アクセス2000使ってます。
質問なのですが、フィールドに入っているデータを1つに
まとめる事はできますか?

今、A列には苗字、B列には名前が入力されているんですが
(例:田中太郎)
A列 | B列
----------
田中 | 太郎  を、

  A列
----------
田中 太郎

にしたいんです。
何か方法があったら伝授お願いします!!!
>>719
更新クエリ。(A列&B列)
>>719,720
つか、ただの選択クエリでもいいような気が。。。

どうしてもテーブルそのものを変えたいのかな。
個人的な経験、なんてものをここで書いても意味ないのかもしれないけど
俺はそれをやって、「ああ、やっぱ分けときゃよかった」てな経験がある。
さいわい、姓と名の間にスペース" "入れてたんで、それを目印にあらためて
分解することが出来たわけだが。InStr関数のことを知るまでに数時間を費やした。
722名無しさん@そうだ選挙にいこう:03/07/20 09:27
メモ型のデータを行間を開けてレポート印刷
しようとしたのですが、

テキストボックスのプロパティで、
「印刷時拡張…はい」の状態で、
「行間…0.2cm」などと設定したあと、

印刷プレビューを見ると、
テキストデータの内容が途中までしか表示
されませんでした。(実際に印刷しても同様。)

「行間0cm」の状態で表示される領域を超えた部分は、
テキストが途切れて、表示されていないようです。

「印刷時拡張…はい」の状態で行間を設定し、
テキストの内容が途切れず印刷できる方法を
ご存知の方、ご教授おねがいします。
723名無しさん@そうだ選挙にいこう:03/07/20 09:34
★★★★★★★★★★★★★★★★★★★★
★  激安アダルトDVDショップ   ★
★    お買い得セール1枚500円!急げ! ★
★★★★★★★★★★★★★★★★★★★★
        激安でDVDをGET!
      http://www.get-dvd.com
   何と! 1枚 500円均一 セール中!

   インターネット初!「きたぐに割引」
  北海道・東北の皆様は送料も激安!!
      http://www.get-dvd.com
       ゲットDVDドットコム!
   
    今すぐアクセス  Let's go !!!!!!!
724_:03/07/20 09:35
725722:03/07/20 11:55
MSのHPによると、行間の問題は、私が使っているAccess2000のバグらしいのですが
ttp://support.microsoft.com/default.aspx?scid=kb;ja;414323

Access2002買う以外になにか方法(マクロ処理等)ありましたら、
お願いします。
726初心者:03/07/20 13:28
>720
>721
ありがとうございました!m(_ _)m
727名無しさん@そうだ選挙にいこう:03/07/20 21:38
ACCESS初心者です。
教えて頂きたいことがあるのですが宜しくお願いします。

フォーム上でボタンを押してサブフォームを出して入力するという
作業をしています。
フォームに入力されているデータの一部をサブフォームにも
入力しているのですが、ボタンを押してサブフォームが開くと
同時にこの作業を行うようにするにはどのようにしたら宜しいのでしょうか?
>>727
ボタンのクリックイベントで入力されたデータを取得
取得したデータをサブフォームのデータ元テーブルに挿入
サブフォーム表示
という流れをVBAで書く
729名無しさん@そうだ選挙にいこう:03/07/21 00:11
>>717
書き足りなかったかもしれませんが、バーコードというのは郵便局の
カスタマバーコードじゃなくて、普通のバーコードです。

>>718
そうですか。バグがあるんですか・・・
その線で調べてみます
730名無しさん@そうだ選挙にいこう:03/07/21 14:07
2つのテーブル(@及びA)で各々A、B、Cと3つのフィールドがある時、
A、B、Cの組合わせが全てイコールのデータと、片方のテーブルには
存在して、片方のテーブルには存在しない、といった条件をまとめて
抽出する方法があれば教えてもらえませんでしょうか。
@=A
@にはあるもの
Aにはあるもの
という3つをまとめて表示したいです。
731名無しさん@そうだ選挙にいこう:03/07/21 14:48
初心者で申し訳ありませんが助けてください。
自宅のPC OS windows xp pro +access2002で作ったデータベースで
タブをつくりその中で顧客一人一人に関連する写真を貼り付けるようにして
自宅では上手く表示されているのですが、会社のパソコンOS windows xp home+access2000
ではその写真のパス名(dcf 0001.jpg)としか表示されません。
これはどうすれば解決できるのでしょうか?教えてください。お願いします。
>>730
VBAでレコードセット取得してLOOPで回すくらいしか思いつかないね。
多分、処理に時間がかかりそうだけど。
>>730
例えば
クエリー1:フィールドA/B/Cが@=A
クエリー2:@にあってAにないデータ
クエリー3:Aにあって@にないデータ
この3つのクエリーをユニオンする。
その際、フィールドを1つ追加しクエリー1は"同一"、クエリー2は"@"
クエリー3は"A"とすると分かり易いかもしれない。
これで出来ないかな?

…でも、この条件って結局、@Aテーブルの全データを表示することに
なるんじゃないのかなぁ?
734732:03/07/21 21:23
>>733
そうか、テーブルが3つあるのかと勘違いしてた・・・・・
別クエリ作ってA&B&Cの演算フィールド作れば
重複クエリで処理できる予感・・・・・・

組み合わせ数次第では、こちらの方が早いか?
735733:03/07/21 21:29
>734 733さん、自分はトーシロで初心者に毛が生えた程度なので…
いつもこの手のものはクエリー作ってユニオンしちゃうんだ
その方が結果が正しいかどうかテストしやすいからね

でも、A&B&Cの演算フィールド+重複除去処理か
テーブル@+A全データからの重複除去処理の
どちらかの方が処理的には早いような気がするなー
736733:03/07/21 21:32
↑733さんじゃなくって 732さんでした
自分宛にしてどうするよ…全く、スンマセン
737名無しさん@そうだ選挙にいこう:03/07/21 22:01
>>730
SQLに関する質問はム板のSQLスレで聞いたほうがまともなレスがつくよ。
738名無しさん@そうだ選挙にいこう:03/07/22 18:46
帳票フォームで一つの項目を固定したいのですが
方法はないのでしょうか?
2段で1レコードにする必要があるためデータシ
ートでは使えないのです。
>>738
>帳票フォームで一つの項目を固定したいのですが

意味不明
740738:03/07/22 21:34
>>739
データシートでゆうところの列固定です。
って意味がわかったところであなたはわかるのですか?
>>740
気分を害したようなので謝っておく。

ごめんなさい。

質問については
分かる気はするが回答する気はない。では。
742_:03/07/22 21:41
>>740
こんな書き込みを見ると分かっていても回答したくない。
744名無しさん@そうだ選挙にいこう:03/07/22 23:03
>>740
ちゅうか、そんな簡単なことくらいわからない奴この板にいるのか?
>>738
>2段で1レコードにする必要があるためデータシートでは使えないのです。

お前のほうが使えねーよ。
さっさとイカ食って氏ねよ。
>>744
この板アフォばっかじゃん。

それ遺骸は胴囲
747名無しさん@そうだ選挙にいこう:03/07/23 06:56
>>740
この板でそんなことわかるヤツはいねーよ。
もっとレベルの高いとコで聞いた方がいいよ(w
748740:03/07/23 11:11
ここでは私の質問は高度過ぎて、答えられるよ
うな人は誰もいないようですね。
もうちょっと勉強してください。
>>740
了解。勉強しとくよ。
さいならw
750名無しさん@そうだ選挙にいこう:03/07/23 13:46
>>748
帳票フォームで列固定は、できないんじゃないのか?
成功したという話も聞かないしな
751名無しさん@そうだ選挙にいこう:03/07/23 14:14
2つのサブフォームを使って、横に並べて、
スクロールバーではなく、ボタンを作ってレコードの移動をさせるというのはどうでしょう?
下向きのボタンをクリックしたら、1レコードずつ移動していって... とか。
いっぺんに移動させる場合は、SendKeys などを使って、
PageUp等を押したことにしてしまうとか。
752 :03/07/23 16:56
1つのレポートにおいて

  =[年度] & "年"
  −−−−−−−
で定義したテキストが、
まず、「印刷プレビュー形式」で開いた場合には
 2003年
と表示されるので問題ないんですが、それを「印刷」すると、
#Name$
と出力されてしまうことがよくあるのです。(特に一回目)

どうすればいいんでしょうか?
753740:03/07/23 17:46
>>751>>750
レスありがとうございます
できれば、帳票フォームだけで行いたいのです。
現に、帳票フォームだけで固定(?)されている方も
いるようなので
諸先輩方に質問します
OS:XP でAccess2002を使っております
郵便番号を全角で入っている列を
一括で半角に変換する方法を御教え下さい宜しくお願いいたします。
15000件ほどある郵便番号を半角に変えたいのですが調べても良く判らず
困っております
>>740
できるよ、結構簡単に。
喪前が最初に質問してから経ってる時間を考えると、十分調べられたはずだが。
>>754
VBAが使えるなら

StrConv(変換したい文字列, vbNarrow)だけど、
わかんないなら、

1→1,2→2,・・・・・・・の検索置換を10回やればいんでね。
でなきゃエクセルで処理して再インポートとか。
せっかくデータベース使ってるんだから、Updateしようよ。
758754:03/07/23 19:54
>756
有難う御座います
10回置換でやってみます
759740:03/07/23 20:01
>>755
あなたには、聞いてません。
web等で調べましたができるとはついぞ見あたりませんでしたし。
知ってるフリだけならサルでもできますよ。
>>759
どうもあなたの質問は高度すぎて、
このスレでは、とても対応できないと思いますよ。

こちらの方がいいのでは?
Microsoft Access
http://pc2.2ch.net/test/read.cgi/db/1056952414/

こちらなら、スキルの高い人が多いと聞きますし。
761754:03/07/23 20:56
>756
有難う御座います、上手く行きました。
ある文字 = Chr(何番か?)
これを知る方法ってありますか。

ついでに
Web上でひろってきたコードで
Chr(&HA)
みたいな書き方を見かけたんですけど、長整数型でもない
この&HAってのは、いったいどこから出てきたんでしょう。

ちょっと実験してみたんですけど、
MsgBox Chr(&HA)
というコードを書いても、エラーにならないんですね。
実行しても何にも表示されませんけど
>>762
文字を引数として、その文字のコードを知りたいわけ?なら ASC関数があるけどね。

それから、&HAって、この表記の意味が知りたいのかな?
(多くの)BASICの場合、&Hは16進数を表すんだな。
この場合、&HAは10進数では 10 ってことはわかる?
764名無しさん@そうだ選挙にいこう:03/07/24 00:34
>>740
素人用スレだと親切に教えてくれるかもよ。
レベル的にも素人以下だし。
765_:03/07/24 00:49
766_:03/07/24 00:56
>>763
>>Asc関数
感謝します。

>>&H
これはちょっと見かけて、おや、と思ったモノで、
現在差し迫ってどうのこうのという問題ではないんですけど
(つまり単純に好奇心)

>>&HAは10進数では 10
というのが今ひとつ理解できません。
使う桁数が少なくて済む表記の仕方なんだろうな、ぐらいのことは
何となく想像がつきますけど(もしかしてこれも違うかな)
出来たら、他にも5つ6つ例を挙げていただけないでしょうか
768767:03/07/24 01:52
自己解決です
「basic 16進数」でググったら出てきました
769名無しさん:03/07/24 08:35
1つのレポートにおいて

  =[年度] & "年"
  −−−−−−−
で定義したテキストが、
まず、「印刷プレビュー形式」で開いた場合には
 2003年
と表示されるので問題ないんですが、それを「印刷」すると、
#Name$
と出力されてしまうことがよくあるのです。(特に一回目)

どうすればいいんでしょうか?
770名無しさん:03/07/24 12:49
>>769
どうしようもない
771名無しさん@そうだ選挙にいこう:03/07/25 15:00
サブフォームがあるフォームを開いたとき、
フォーカスを自動的にそのサブフォームの新規レコードに移動させたいのですが、
どうすればよろしいのでしょうか?
>>771
解釈その1
 メインフォーム/サブフォームの入れ子構造のフォームを開いた時

解釈その2
 サブフォームから別のフォームを開いた時

どっち?

> サブフォームがあるフォームを開いたとき
「サブフォームが、とある別のフォームを」と意味解釈できてしまうんで。
773771:03/07/25 19:39
>772
解釈その1のつもりでしたけど、その2でも構わないです。

フォームを開いた時っていうのも、本当はどうでも良くて、
とにかく、サブフォームの新規レコードへ移動するプログラムが分かれば。

『Docmd.GotoRecord , , acNewRec』はメインフォームにしか使えませんよねぇ・・・
>>773
メインフォームのOpenイベントでSetfocusを使ってサブフォームにFocusを移す。
 +
サブフォームのOpenイベントなりで新規レコードに飛ばす。

で、多少あがいてみて、なお分からなければ再度また。
775771:03/07/25 23:21
>774
ありがとうございます。
試せるのが月曜日になってしまうので、
もしそのときにもこちらを見てみえましたら、またご指導をお願いします。
ACCESSってデータベースなの?
データベースソフト
もしくは
フロントエンド
778名無しさん@そうだ選挙にいこう:03/07/26 17:55
ACCESS2000ですが、ページ設定(印刷)を設定しても、たまにプリンターの基本設定に戻ってしまいます。
他のどこかに設定を保存する場所があるのですか?
または、VBAとかで用紙サイズや余白を指定できますか?
できるかどうかだけでも教えてください。
779名無しさん@そうだ選挙にいこう:03/07/26 23:20
>>778
ttp://www.accessclub.jp/samplefile/samplefile_58.htm

レコード件数が不定の場合でも
ページごとに決められた枠を描くにはどうすればいいでしょうか?
今は足りないレコードの数を計算して
ソーとフィールドのみのカラのレコードを挿入しています。
何かいい方法ありませんか?
780突然ですが質問です:03/07/27 00:37
現在ワードver2002を使用しています
ワードでデータの差込などをする際アクセス2000でも大丈夫でしょうか?

781778:03/07/27 13:35
>>779
ありがとうございました。
>>779
OpenイベントでLine
783779:03/07/28 00:10
>>782
Lineってどういうことでしょうか?
もうちょっと詳しく教えて下さい。
Lineオブジェクトを先に配置しておいて
Visibleプロパティで切り替えるって意味でしょうか?
だとしたらデザイン時、詳細セクションには
1レコード分の領域しかないのでそう考えても行き詰まってしまいました。
お手数ですがよろしくお願いします。
>>783
LineってVBAのLineメソッドって事。

あとこれ以外にもこんなのとか。
http://support.microsoft.com/default.aspx?scid=kb;ja;JP404909
785名無しさん@そうだ選挙にいこう:03/07/28 01:47

Access2000でADOを使っています。
フォームでデータを入力→コマンドボタンで閉じる時に保存をかけようとしてます。
フォームのレコードソースとしてテーブルAを指定してあります。

画面で入力→ボタンをクリック→(プロシージャで)Me.Requery→レコードセット
でテーブルAとBを開く→データを保存
という流れで処理してるのですが、
画面で最後に入力したデータが保存されません。
Me.Requeryの後にメッセージボックスを置いてみることによって
どうもMe.Requeryで実際にデータが保存されるのにタイムラグが
あるようだということがわかりました。

普段はAccess97で開発してまして、こういうタイムラグのようなもの
を経験したことがないのですが、この様な場合、どうやって画面の
データを即更新できますか?
786名無しさん@そうだ選挙にいこう:03/07/28 02:15
何としても浜崎のベストジーニスト殿堂入りを阻止しようよ!!
今ならまだ間に合う、「aiko」に投票を!!!!!
もし、あなたがアンチ「aiko」なら、現在3位の松嶋 菜々子でもかまいません!!
(あまり幅を広げると票が割れすぎて浜崎に喰われます!!)
田村亮子ことY(T)AWARAちゃんとの声もありますが、
選考委員会に握りつぶされる危険が高すぎます!!
ここは無難に圧倒的大差で「aiko」を勝たせましょう!!

◎投票結果
http://www.best-jeans.com/count/index.html#top
◎投票フォーム(一人一回 制限)
http://www.best-jeans.com/present/bj2003.html

原則、本名で投票。

*他のスレにコピペをよろしくお願いします

7月31日までです!!!
787名無しさん@そうだ選挙にいこう:03/07/28 11:30
アクセス2000ですが、
帳票フォームでレコードを移動するときに下記のコードを
キー入力イベント時に書いて矢印キーで、上下(レコード移動)
させております。

If vbKeyUp = KeyCode Then
 DoCmd.GoToRecord , , acPrevious
ElseIf vbKeyDown = KeyCode Then
 DoCmd.GoToRecord , , acNext
endif

ところがコンボボックスの時にうまくいきません
方法をご存じの方はおられませんか?
788名無しさん@そうだ選挙にいこう:03/07/28 17:03
789779:03/07/29 01:16
>>784
非常に参考になりそうです。
時間のある時にゆっくり見てみたいと思います。
ありがとうございました。
790名無しさん@そうだ選挙にいこう:03/07/29 03:48
文字列のフィールドに入ってるデータ たとえば、101 021 057 みたいなのを
数値として 101 21 57 として扱いたいのですが、どうしたらいいでしょう。
Excelのワークシート関数 value みたいな関数。

どうしても思いつかないので、

Function accessdevalue(mozi)
Set obj = CreateObject("excel.sheet")
obj.ActiveSheet.range("A1").Value = mozi
obj.ActiveSheet.range("B1").Value = "=value(A1)"
accessdevalue = obj.ActiveSheet.range("A1").Value
End Function

自分でも基地外だと思います。誰か、助けてください。
cast とか?
>>790
データ型変換関数を使えばいいんでないの?

CInt 整数型
CDbl 倍精度浮動小数点数型
CLng 長整数型
CSng 単精度浮動小数点数型

など…
val関数使えばいいじゃん。
Accessのレポートで出力されたものを、そのままワードなりなんなりで
出力したいのですが、できるもんなのでしょうか?

あの出力結果をそのままメール送信するとレイアウトなどがすべてはず
れた状態になってしまい、なんともださい状態になってしまいます。
>>794
閲覧だけならスナップショット形式がいいのでは?
Viewer は以下からダウンロードできます。(既にインストされているかも)
ttp://office.microsoft.com/japan/Assistance/9798/snapshot.aspx
「このコントロールの名前」ってのは何て書けばいいんでしょう

たとえば、あるコマンドボタンをクリックしたとき、その「コマンドボタンの名前」
をメッセージボックスで表示させたい、とか(いや、本当はそんなことがやりたい
わけじゃないんですが)
MsgBox 何ちゃら  みたいな

ためしに
MsgBox ControlName
なんて書いてみたら、エラーも出ず、何にも表示してくれませんでした。
ためしついでに
MsgBox Name
なんてこともやってみましたが、これだとフォーム名が表示されてしまいました
>>796
ActiveControlプロパティってのを調べてみれ。
ヒントくらい見つかるぞぃ。

それとバージョンぐらい書け。うちはAccess2002だがなぁ
798名無しさん@そうだ選挙にいこう:03/07/29 17:44
access2000を使ってます。
帳票フォームで、日付を表示させております。
これを
現在→こうしたい
1/2 1/2
1/2
1/2
1/3 1/3
1/3
1/4 1/4
1/5 1/5
このようにする方法はありますでしょうか?
799名無しさん@そうだ選挙にいこう:03/07/29 17:54
>>798
ヒント:重複データ非表示
もしくは Private Sub 詳細_Format にゴリゴリ書く。
800_:03/07/29 18:12
801名無しさん@そうだ選挙にいこう:03/07/29 18:45
>>799
レポートでしたらご指摘の方法ですでにできるのですが、
帳票フォームの表示がみずらいので困っているのです。
802_:03/07/29 18:46
803名無しさん@そうだ選挙にいこう:03/07/29 18:47
☆エッチな美女たちに癒されてください☆
http://endou.kir.jp/yuminet/link.html
http://endou.kir.jp/marimo/link.html
804796:03/07/29 19:52
>>797
ありがとさんです
ヒントっていうよりほぼそのまんま答でした。
実際にはメッセージボックス表示なんてことがやりたかったわけじゃなく
コントロールの名前によって処理を書き分けたかったんで。
Cmd01、Cmd02・・・で、処理も大体同じような内容なので、ボタン一個
一個についてプロシージャ書かなきゃならないなんて絶対変だ、きっと
Function一発ですむはずだと思って。

遅ればせながら(手遅れだっつうの)Ac2000です
805マクロ:03/07/29 22:16
すいません。
テーブルに画像をいれてレポートで印刷できるようになりますか?
教えて下さい。
806名無しさん@そうだ選挙にいこう:03/07/29 22:20
あげ
807799:03/07/30 12:15
>>801
読み間違いスマソ。

帳票フォームでやるなら、日付表示用ダミーテーブル作って、
ダミーテーブルと元テーブルを連結してダミーテーブルに日付を
書くコードを書けばできるかな。

更新時などの処理がめんどうそうだが、なんとかなるとは思う。



808名無しさん@そうだ選挙にいこう :03/07/30 12:19
>>805
出来るよ。で 画像はなにから取っていますか。
まず画像からだな。
なんか作ったアクセスを使って、
ボタンを押されたときに、CD-R若しくはCD-RWに
データを焼くようなことって出来る。
FDだったら出来る知識は持っている。
現在運用中のAccessデータベース(ちょっとした会計帳簿ソフト)

これをボタン一発でデータを月次毎にバックアップをしたいです。
そのさいに、元のデータベースの一部のテーブル内容(勘定科目や
定数的な金額情報主に商品単価など)をクリアせず、たの仕入れ
情報などをクリアするようにしたいのですが、

バックアップ(完全レプリカで結構です)をとり、主データベースのほう
をクリアするにはどうしたらよいでしょうか?

この時、主データベースは初期状態に持っていきたいのですが、主キ
ーにあたる部分などは続きからにしたくないのですが、なにか良い案は
ありますでしょうか?
>>810
SQLでInsert→Delete

主キーを最初からとりたいなら、最適化(DAOかJRO)
812マクロ:03/07/30 22:21
>808
返信ありがとうございます。
画像はデジカメから取ってデスクトップに保存したJPEGイメージ
です。テーブルに入れれるでしょうか教えて下さい。
>>811
なるほど。ありがとうございまいた。
814名無しさん@そうだ選挙にいこう:03/07/31 01:10
>812
画像ファイルへのパスをテーブルに文字列として格納。
画像自体を入れる必要は無い。
レポートにピクチャボックスでも配置して
パスを設定してファイルパスを元にロードする。

といけると思う。

レポートで表を作成しているのですが
枠だけ太くしたいのですがうまくいきません。
詳細部分(でいいのかな?)にテキストボックスをおき
テーブルに連結しています。
ページが変る瞬間に呼ばれるイベントハンドラに
太線に設定したLineをVisible=Trueにしたいのですが、
具体的にどこに処理を書けばいいのかわかりません。
明日朝完成させなければなりません。。
なんとか知恵を貸してくれませんか?
よろしくお願いします。

815814:03/07/31 01:12
>814
上記の処理で行う対象のLineは
枠の一番下にあたるLineのことです。
説明不足失礼しました。
816 :03/07/31 09:40
Access2000について

テーブルからデータを検索をするときに

strSQL = "SELECT 値 FROM テーブル名 WHERE キー"
Rs.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdText



Rs.Find "通貨コードA = '" + wkRs("通貨コードA") + "'"



クエリー

の3つだとどれが一番検索速度が速いか教えてください。
現在、SQLを発行しているのですが遅いような??

大量データをループするのでインデックスなど利用してようと
思っていいます。

よろしくお願いします。

809の質問者です。
その回答をどなたかお願いします。
>>809
パケットライトソフトを使う
>>816
一般的な話の前に、まずは自分の環境で
それぞれの場合の経過時間を計測してみるのが良いのではないかと思うのだけど。
SQLなりクエリの構造で随分速度が変わることもあるし。
>>816
インデックスがあるのなら、一般的にはFindよりSeekの方が早いから、
これを含めた4つで比較したら?
821マクロ:03/07/31 23:14
>814
ありがとうございます。早速試して見ます。

太枠はだれかわかる人お願いします。
822名無しさん@そうだ選挙にいこう:03/07/31 23:21
ACCESS2000で
プロパティでコントロールの高さとか幅とかを調整する時に
数字が大文字だと受け入れてくれないのがとてもむかつくんですが、

2002だと解消されてますか?
>>822
改善されているみたい
824Unicode圧縮:03/08/01 08:03
Unicode圧縮というのは、どういうものなのでしょうか?
圧縮あり→ UTF-8
圧縮なし→ UTF-16
ということですか?
825_:03/08/01 08:11
826名無しさん@そうだ選挙にいこう:03/08/01 08:26
827名無しさん@そうだ選挙にいこう:03/08/01 10:17
☆★ 新商品 ゾク・ゾク 入荷!! 急げ〜!! ☆★☆
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安!  スピード発送!  商品豊富!   
★☆      http://www.get-dvd.com        
☆★ 激安DVDショップ 「GETDVDドットコム」 
★☆      http://www.get-dvd.com        
☆★ 今すぐアクセス Let’s Go!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
828名無しさん@そうだ選挙にいこう:03/08/01 10:51
ACCESS2000の質問です。OSはW2Kです。
フォームのボタンで、削除クエリーを実行させた後に、
そのフォームを一旦閉じてから再度同じフォームを開くようなVBAを
書いたのですが、2回に1回しか削除がされません。
これはどのようにすれば必ず削除されるようになるのでしょうか。
コードは以下の通りです。

DoCmd.SetWarnings False
DoCmd.OpenQuery "削除クエリー",acViewNormal
DoCmd.SetWarnings True
Docmd.Close acForm,"フォーム1",acSaveYes
Docmd.OpenForm "フォーム1",acNormal
829名無しさん@そうだ選挙にいこう:03/08/01 12:21
>>828
それなんですが、フォームで入力したデータがテーブルに保存する前に、
削除が実行されてるんだと思います。
そのコードの前にメッセージボックスを配置して、メッセージボックスが
表示されたときに、ワンテンポおいてみてください。


解決方法は・・・・私も知りたいですw
>>828
Docmd.Close acForm,"フォーム1",acSaveYes
DoCmd.SetWarnings False
DoCmd.OpenQuery "削除クエリー",acViewNormal
DoCmd.SetWarnings True
Docmd.OpenForm "フォーム1",acNormal

これでどうでしょ?
831_:03/08/01 13:15
>>828
結果を返さない insert, update, deleteなどのクエリの実行は
DoCmd.OpenQueryではなくDoCmd.RunSQLかExecuteメソッド
を使えというのを見かけます。
ただし、DoCmd.RunSQLは処理の終了を待たずに次のコード
に制御が移ってしまうので、最終的にはExecuteメソッドで
クエリを実行するというところに行き着くのではないかと。
>828
フォーム上に削除するレコードを含むデータが表示されていないかな?
もしそうなら削除する前にフォームを閉じて、削除後開かないとデータは削除できないかも。
出来れば、ちゃんとしたコードになるまでDoCmd.SetWarnings Falseはコメントにした方が良い。
もし万が一データが削除できないと言うエラーがあがっていても、それを殺してる状態なので
エラーが表示されないで気が付かないから。
最終的に全部の動作がうまくいくまで、DoCmd.SetWarnings Falseはコメントに。
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
836828:03/08/02 12:28
>829,830,832,833
ありがとうございます。
月曜日に試してみます。
830、833さんの言うように先にフォームを閉じてみます。
837_:03/08/02 12:45
838名無しさん@そうだ選挙にいこう:03/08/03 23:36
AAAAA
BBBBB
CCCCC

というテーブルがあり、そのデータの数(?)をカウントしたいのですが・・・
上記だと3って感じで。
SELECT
 COUNT( FIELD_NAME ) AS RECORD_COUNT
FROM
 TABLE_NAME

840838:03/08/03 23:52
>>839
できました!サンクスです。
841_:03/08/03 23:53
842816:03/08/04 09:27
>>819
>>820

回答、ありがとうございました。
検証してたので返事が遅れて申し訳ない。

一番、高速だったのがSeek
Findとクエリーが同じくらい。(自分の環境&設計の場合)

なぜSQLが一番遅かったです。
つーか遅すぎ。。。

Debugしたりログを出力をするならSQLが一番流れを
追いやすいんだけどね。残念
843名無しさん@そうだ選挙にいこう:03/08/04 13:56
質問です。宜しくお願いします。

アクセスとCE機の連携についてですが実際に連携して使っておられる方、
メリットとデメリットなど教えて頂けませんか?

現在ファイルメーカーproを使っていますが、新たにファイルメーカーモバイルを
購入してCEかPalmでデータを持ち出すか、アクセスに乗り換え手元にあるdocomoのG-FORTでアクセスと連携させて持ち出そうかと。
アクセスとCE機(G-FORT)との連携で幸せになれれば新たに投資しなくて済むのですが。
主に取引先の新規開拓情報(訪問日時、営業内容 等)を出先で確認したいのです。

アクセスはちょっと使ってみたのですが、ファイルメーカーに慣れてしまっている為かイマイチよく分かりませんでした。

長文の上、分かりづらくてすみません。


844843:03/08/04 13:58
読み返してみたがこの上なく読みづらいな・・・。

スレ汚しスマソ。爆死してくる。
ドキュモのポケットポストペットをCE化して
連携できないのかなぁ。

少々お堅い仕事なんでスーツのポケットから
あの端末を出して使いこなしたらオモロイ。
846Choosing a File Format in Microsoft Access 2002: Database Tool:03/08/05 14:31
Choosing a File Format in Microsoft Access 2002: Database Tool
http://www.microsoft.com/downloads/details.aspx?FamilyId=618B785E-1FE2-4550-9A81-925D62599963&displaylang=en
http://download.microsoft.com/download/9/8/7/9875795d-aafb-405c-b524-a179d03c1bd9/odc_acFormat.exe
http://msdn.microsoft.com/library/?url=/library/en-us/dnacc2k2/html/ODC_acformat.asp

Finding and determining the version number of the various MicrosoftR Access database files
in your organization can be a difficult and daunting task.
To assist you, we have created an Access 2002 database that you can download here.
847名無しさん@そうだ選挙にいこう:03/08/06 10:52
ちょっとVBA一般の話ですが、文字列で関数名を書いておいて、その
関数を呼び出すすべはありますか?

Dim func As String
func = "hoge"
call func

みたいな感じで。
848_:03/08/06 11:19
>847
例えば 
Private Function Test1
 Test1 = InputBox("代入する文字を入力してください。", 変数入力)
End Function

Private Sub Test2(txtX)
If  (txtX="") Or isnull(txtX)=true Then
 msgbox"txtXに値は代入されていません。"
Else
 msgbox"txtXは「 " & txtX & " 」が代入されています。"
End if
End Sub

Private sub Yobidasi
Dim txtX As String
txtX=Test1
call Test2(txtX)
End sub

と言う感じです。
分かりますかね?
850 :03/08/06 14:18
>>846
これって、Access 2000 でも動きますね。
改造して、自分のパソコンに何が入っているかのデータベースを作ってみようと思います。
できれば Indexing Service と連動させたいなぁ。
851名無しさん@そうだ選挙にいこう:03/08/06 14:43
テーブルをフィルタにする 又は テーブルをキーにしてデータを抽出
って、どうやったらできますか?

8000件の得意先住所データから、50件くらいの得意先を「得意先名」で抽出したいのです。
(支店などがあるので、ワイルドカードが使えるといいのですが…)

WIN98 ACCESS97です
>>851
素直にフォームでも使えばいいんじゃないの?わざわざコーディングするまでも
ないでしょ。

853850:03/08/06 15:31
このプログラム、使うにはVBAから Windows Scripting Runtime が参照できるようになっていないとだめみたいですね。
Scripting.Dictionary 型がつかえないから。

ただ、ディクショナリがつかえなくても普通にテーブルで代用できるような気もしますが。
当然 Windows Scripting Runtime 内で処理するよりも遅くなるでしょうが。
854名無しさん@そうだ選挙にいこう:03/08/06 19:37
教えて下さい。
フォームでVBAを使って抽出したデータを
レポートに反映させるには、どうしたら良いのでしょうか?
XP、2002です。
よろしくお願いします。
855847:03/08/06 19:58
>>849
ありがとうです。
でもちと質問の仕方が悪かったようです。
やりたいことは

> Private Function Test1
> Test1 = InputBox("代入する文字を入力してください。", 変数入力)
> End Function

ここでinputbox に"Test2"と入力したら

> Private Sub Test2(txtX)
> If  (txtX="") Or isnull(txtX)=true Then
>  msgbox"txtXに値は代入されていません。"
> Else
>  msgbox"txtXは「 " & txtX & " 」が代入されています。"
> End if
> End Sub

> Private sub Yobidasi
> Dim txtX As String
> txtX=Test1
> call txtX(txtX)
> End sub

ここでTest2が呼び出されるような感じのことがしたいのです。はい。
できないんかなぁ、、、いや、case文とか無しでできたらなぁと。
856847:03/08/06 20:25
分かりますたeval関数でできるんですね、、失礼いたしますた。
857851:03/08/07 09:24
>852 ありがとうございます。

今までクエリーの方しか触った事ないので、フォームの方でできるか
勉強してみます。
858854:03/08/07 10:27
854です 先日のご質問ですが、どうやら2ちゃんではアドバイスをいただけそうにないので、諦めます。 よって854の発言は放置してください。 よろしくおねがいします。
逆ギレしたけど、せい一杯そういうそぶりを見せないでなんかひとこと言いたかったのか
>>858
そんなにふてくされなくたって…

フォームと同じレコードソースにすればいいんでないの?
さらにフォームと同条件の抽出/並び替えを適用したいなら以下を

レポートは既に作成済みとして
フォーム上にコマンドボタン(cmdReport)を作成し、クリック時に

Docmd.OpenReport "レポート名", acViewPreview (印刷プレビュー/印刷ならacViewNormal )
Reports!レポート名.Filter = Me.Filter
Reports!レポート名.OrderBy = Me.OrderBy
Reports!レポート名.FilterOn = True
Reports!レポート名.OrderByOn = True

861854:03/08/07 12:03
よそでお伺いしようと思ったのでマルチにならないように。と思い
このように書き込みました。
862854:03/08/07 12:09
854です
うう、お返事キターー!!
ご親切にありがとうございます。
よそに書き込まなくてよかったです、さっそくためしてみますm(__)mペコ
>>854
このスレは昼間の方が人が多いから
夜にレスつかなかったからって諦めちゃ駄目だよ
864854:03/08/07 13:30
はい、わかりました!
いま、がんばりちゅうです。。m(__)m
>>860
ゴネたら誰かが構ってくれるって前例つくるのはどうかなぁ・・・?
時には手厳しく対処することも必要だと思うけど。

>>858=854
甘え過ぎ。
みんな、他人の都合に合わせて行動しているわけじゃないんだぜ?
866860:03/08/07 14:38
>>865
そうは思うけどたまたま手が空いたから…
867854:03/08/07 14:40
いや、本気でゴネてもすねてもないんです。
何と申し上げたらよいかわかりませんが、
そういうふうにとらえられても
仕方がないと思います。
ごめんなさい。

今度こそ本当に放置しといてください。

860さんありがとうございました。
868860:03/08/07 15:01
>>867
できたの?
あんまり気にしないで、またおいで!
869854:03/08/07 15:15
860さんありがとうございます。
実はまだできません。
おそらく、フォームの抽出処理がまずいと思いますので、その辺を現在直し中です。。。
870_:03/08/07 15:35
871名無しさん@そうだ選挙にいこう:03/08/07 16:12
フォームでテキストボックスを作ると、
ラベルと入力欄が一体になったものができますよね??

で、ラベルだけ消しちゃった場合、
またラベルを復活させることはできるんでしょうか?
_| ̄|〇 <データベースが大きくなりすぎて、 USB メモリに入らなくなっちまった…
>>871
他にラベル付きテキストボックスがあるならラベル部分を
Ctrl+Cでコピーしてからラベルを消してしまったテキストボックスを
選択後Ctrl+Vで貼り付ければOK
874名無しさん@そうだ選挙にいこう:03/08/07 16:51
>>871
新規でラベルをつくり、テキストボックスに貼り付ける。
又は、フィールドリストから再度読み込む。
他に方法あるかも?
でも、俺は使い勝手がよくないのでいつも別々にしてます。
875名無しさん@そうだ選挙にいこう:03/08/07 16:53
こういう企画がエキサイトで・・・
http://px.a8.net/svt/ejp?a8mat=ICAWR+8NZ5RM+5YG+BYT9F
876名無しさん@そうだ選挙にいこう:03/08/07 17:00
>>873-874
ありがとう。
テキストボックスにラベルを貼り付けたら、置き換えられてしまうと思い込んでました。
877名無しさん@そうだ選挙にいこう:03/08/07 17:00
☆★ 新商品 ゾク・ゾク 入荷!! 急げ〜!! ☆★☆
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安!  スピード発送!  商品豊富!   
★☆      http://www.get-dvd.com        
☆★ 激安DVDショップ 「GETDVDドットコム」 
★☆      http://www.get-dvd.com        
☆★ 今すぐアクセス Let’s Go!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
878_:03/08/07 17:06
879名無しさん@そうだ選挙にいこう:03/08/08 04:08
テーブルとかクエリ、もう増えすぎて一覧で見づらい…
880名無しさん@そうだ選挙にいこう:03/08/08 04:36
ところで、フォームに IE を貼り付けるなんてできるんですかね?
Visual Basic Editor の参照設定には、
Microsoft HTML Object Library とか Microsoft Internet Controls とかあるんですが…
>>872
データベースを分割して、リンクしる!

…そうすると、複数回移動か複数のメモリーが必要だな。大容量メモリー買った方が楽か…

データを全部テキスト書き出しにして、データを空にしたmdbを最適化して
mdbとデータテキストをメモリーへ! やっぱマンドクセエ (~ヘ~)
882名無しさん@そうだ選挙にいこう:03/08/08 13:21
>>881
部分レプリケーションで何とかしてみます。
出先とか自宅でデータいじりたいときのために USB メモリに入れているわけで、
正直、すべてのテーブルが必要なわけじゃないんで。
ADO を使ってあるあるフォームのコーディングをしています。
そのフォーム内でずっと継続的に使うレコードセットがあるので、
それをモジュール変数として保持しています。

Private cn as ADODB.connection
Private rs as ADODB.recordset

Private Sub Form_Load()
  ここでコネクション cn とレコードセット rs を初期化
End Sub

初期化はフォームがロードされたときに行っています。
が、 rs がいつのまにか何も参照していない状態になってしまいます。
つまりいつの間にか Set rs = Nothing な状態になっているのです。
かってに rs が破棄されるようなことがありえるのでしょうか?

また、そもそも、フォームがロードされてからアンロードするまで
継続的に使用されるようなオブジェクトを、
そのフォームのモジュールのモジュール変数として保持するということは
正しい設計なのでしょうか?
885884:03/08/09 12:57
解決しました。

あるプロシージャの中で条件分岐によって End しているところがあったためです。
実は Visual Basic を使うのは初めてで、
End ってのを C における break と勘違いしてました(笑
886名無しさん@そうだ選挙にいこう:03/08/09 18:54
ADO で Recordset を Open するとき、
オプションに adCmdTableDirect を指定しなければならない場合というのは
どのような場合なのでしょうか?

たとえば Seek メソッドを使ってレコードを検索するためには
adCmdTableDirect を指定しておかなければなりませんが、
この理由がわからないのです。

それと、 >>883 さん、有用なサイトを教えていただきありがとうございました。
887886:03/08/09 19:09
adCmdTableDirect はデータベースプロバイダとして
OLE DB を使っているときしか指定できず、
ODBC を使っているときには指定できないということですが、
それもなぜか理解していません。
888名無しさん@そうだ選挙にいこう:03/08/10 16:53
【玄人】素人ACCESS相談所【禁制】
http://pc2.2ch.net/test/read.cgi/bsoft/1047052026/
と重複しますが、同じようなスレタイなので
こちらでも質問させていただきます。

-------
質問です。
いま、検索画面”A”で色々な検索条件を指定して、
その検索した結果をデータシート形式の画面”B”に
表示(再描画)する方法がわからず困っています。

最初、画面”B”がない場合は、一覧表示ボタン_Click()で
(1)DoCmd.OpenForm stDocName, acFormDS, , stLinkCriteria, , , "検索条件"
Form_Openで
(2)Me.RecordSource = Me.OpenArgsで出来るのですが、

一度画面”B”が表示されてしまうと(1)ですぐ画面”B”が開いてしまい
(2)にたどり着かないのです。

サンプルにあるIsLoaded()で画面”B”が存在するとき
どのようすればよいのか教えていただきたいです。
どうぞよろしくお願いします。

>>888
それって意外といい方法ないのかも。
ちょっと苦しいけど、一度画面を強制クローズしてから
再度オープンさせてみては?
890 :03/08/11 00:29
フォームに、当該レコードを削除するボタンを付けるにはどうすればいいのでしょうか?
自分自身へのレコードセットを取得して削除するのでしょうか?
>>890
SQL
892771:03/08/11 01:53
>890
マクロでできるから、それをモジュールに変換してみ。
893 :03/08/11 11:06
ShellExecuteでのIE起動いついて教えて下さい。

PicFileName = "http://www.yahoo.co.jp"
N = ShellExecute(GetDesktopWindow, "open", PicFileName, Chr$(0), "", 5)

これで実行すると、IEが既に起動されていた場合、そのIEを使ってしまいます。
起動されているIEがあっても、ShellExecuteはそれを使わずに、
新しいIEプロセスを起動させて表示する方法は、あるのでしょうか?
教えて下さい。宜しくお願いします。
894名無しさん@そうだ選挙にいこう:03/08/11 12:13
access2000、win98SEを使っています。
固定長のテキストデータを取り込んで加工しようとしているのですが
行き詰まっています。
元データは基本的には全角で1つのフィールドに1文字ですが
データが入っていないときは半角スペースが2つ入っています。
このせいで、テキストインポートで定義を作ってもずれてしまいます。
そこでインポート時には1つのフィールドで取り込んでおいて
Mid関数をぶん回してフィールドを切った別テーブルに収めてやろうと思い
DO
If Mid([元tblのフィールド],start,1)=" " Then
h(i)=""
start=start+2
Else
h(i)=Mid([元tblのフィールド1],start,1)
start=start+1
End If
※h(i)を別テーブルに収める処理
i=i+1
Loop While i=18

こんなことを考えているのですが
1.h(i)を別テーブルに収める処理
(フィールド名は[フィールド1]…[フィールド18]が都合がいいです)
2.そもそもこれをどこに書けばよいか
を教えて下さい。
895名無しさん@そうだ選挙にいこう:03/08/11 18:01
>>894
無理しないでテーブル作成クエリーでやったらすぐできるよ.
896_:03/08/11 18:12
>>895

>>894の行数に対して
1行瞬殺かよ!
ヤヤワロタ
898名無しさん@そうだ選挙にいこう:03/08/12 00:24
現在開いている MDB ファイルの大きさを、
リアルタイムにフォームに表示することってできますでしょうか?
899名無しさん@そうだ選挙にいこう:03/08/12 00:25
フォアグラにならなくったって、結局はつぶして食べるんだよね??
じゃぁ愛護する必要ないじゃん。
って、動物愛護なんてすべて単なる自己満足に過ぎない。
900名無しさん@そうだ選挙にいこう:03/08/12 01:42
>>102
俺もそうだよ。
クエリで実行した結果のものを
同じDB(そのクエリを実行したDB)の中に
エクスポートすることは出来ないんでしょうか?
>>895
レスありがとうございます。おっしゃるように
テーブル作成クエリが楽なのですが空白(半角2文字)の後のフィールドが
ずれてしまうので一旦諦めました。
ただ、調べたところStrConv関数とMidB関数を組み合わせればテーブル作成クエリで
いけそうなので挑戦中です。
また詰まったら教えて下さい。
>>902
元データをテキストエディタで開いて

半角スペース×2 → 全角スペース×1
の置換した方が早いんじゃないかと・・・・・
>>901
SQLの insert into 〜 select 〜 句を調べてみれ
905892=902:03/08/12 13:51
>>903
全然気が付きませんでした。
それが一番早いですね。帰ったらやってみます。
ありがとうございます。
906888:03/08/13 02:24
>>888->>889
遅くなりましたが有難うございます。
そうですか、いい方法があると良かったんですけど。
ネットで検索してもなかなかこのパターンの解説が見つからなくて。
何か解決法があってもよさそうな気がするのですが
多分強制的にモーダルにするとかしてみんな逃げたりしてるのでしょうね。

一度閉じて開く、というのはなんとなく気が進まないのですが、
ちょっと考えてみればこれが一番の早道なのかもしれないですね。
907854:03/08/13 10:34
860さんありがとうございます。
実はまだできません。
おそらく、フォームの抽出処理がまずいと思いますので、その辺を現在直し中です。。。
908名無しさん@そうだ選挙にいこう:03/08/13 16:08
既出かもしれませんが、クロス集計クエリで列方向の集計をした行を
表示させるにはどうしたらいいのでしょうか?
行見出し:製品、列見出し:店舗というような表です。
某サイトのQ&Aで
1. メインのクロス集計クエリーを作成
2. 行見出しにダミーをかました 1 行だけの総計用クロス集計クエリーを作成
3. 1 と 2 を使って UNION クエリーを作成
というのがあったのですが、
2.のクエリに総計を表示させるところでつまづいています。
ACCESS2000です。
909名無しさん@そうだ選挙にいこう:03/08/13 17:12
Access のオプションでシステムオブジェクトも表示する設定にすると MSysObjects が見えますよね。
ここにはテーブルやクエリの情報が格納されているわけですが、
この MSysObjects の Id フィールドって、実はころころ変わるんですね。

テーブルを一意に識別する整数ってのはないんでしょうかね。
>>909
主キーなんだし、一意には識別できてるんじゃない?
>909
何でそんなことしたいの?
912名無しさん@そうだ選挙にいこう:03/08/14 22:08
MS Access 2000 のフォームの、リストボックスの挙動についてお聞きします。

            値集合タイプ = テーブル/クエリ
            値集合ソース = なんらかの SELECT 文

として、その SELECT の結果をリストに表示させます。
仮にその SELECT 文の結果として返されるレコードのフィールド数が 5 だったとして、
その左側 3 フィールドだけをリストに表示させるとします。そのためには

            列数 = 3

としますよね?で、そのリストボックスの返す値として第 4 フィールドの値を使いたいときは

            連結列 = 4

とします。それだとうまく動くのですが、リストボックスの返す値として値集合ソースの第 5 フィールドを使いたいとき

            連結列 = 5

としても、リストボックスの値は常に空白になってしまいます。
なぜなんでしょうか??

連結列の値は、列数の値 + 1 までしか許されないのでしょうか?
913名無しさん@そうだ選挙にいこう:03/08/15 06:20
ADO の Recordset である GUID を持つ行をフィルタしたいときにはどうすればいいんでしょうか?

Microsoft Access
http://pc2.2ch.net/test/read.cgi/db/1056952414/71

データベース板で質問してみたのですが、人が少ないようなので…
あちらにレスつけていただければ助かります。よろしくお願いします。
>>912
連結列の疑問は他の人の回答を待つとして、何のためのSELECT文かとふと思う・・・。
>>912
列数をSELECTしたフィールド数そのままにして、連結列は任意。
表示させてくない列は「列幅」を0にすればいいよ

例えば列数5の場合、列幅を 2;2;2;0;0 と指定すれば列4,列5は表示されない
916名無しさん@そうだ選挙にいこう:03/08/15 12:16
>>915
なるほど、とにかく全部表示させるようにして、列幅で非表示にすればいいんですね。

>>914
つまり、非表示にするくらいなら、はじめから SELECT しないでいいんじゃないか?
ということでしょうか?

リストボックスに表示するのは商品名、
でもリストボックスの Value プロパティで返す値は商品コードにしたいときなどは、
商品コードは表示しなくてもいいかなと思って…
917名無しさん@そうだ選挙にいこう:03/08/15 19:38
ツールバーとかの設定は、 MDB ファイルに含まれないんでしょうか?
というのは、複数の社員の Access で同じツールバーにしたいのです。
918名無しさん@そうだ選挙にいこう:03/08/15 19:41
ところで、次のスレッドはデータベース板にお引越しなんでしょうか??
とはいえこっちを血眼になって探しちゃう人も多いと思うので、
ビジネスソフト板にもひとつスレッドがあってもいいかとは思いますが。
919名無しさん@そうだ選挙にいこう:03/08/15 21:51
どなたかご存知の方があったらよろしくお願いします。
現在、得意先からのcsvで送られてきた注文データを、
うちのAccess97の生産管理システムに落として、それを
展開して仕入先ごとへの注文をプリントアウトしFaxして
います。これをメールで送る方法はないでしょうか?
一件づつ送る方法ならわかっていますが、データ取り込みの
一連の作業のコードの後に書き加えたいと思っています。
920山崎 渉:03/08/15 21:55
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
921山崎 渉:03/08/15 22:53
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
922名無しさん@そうだ選挙にいこう:03/08/16 02:30
>>918
このスレの内容って「RADでこういうアプリケーション(フォーム、レポート)
作るにはどうするべきなのか」というノウハウに関する質疑応答が主流だと
思うんだけど、果たして、このスレがこの板に存在することが適切かと問わ
れると首を傾げたくなる。かと言ってDB板にある方が良いのか問われると
それも疑問だ。
しかし、DB板の現状が"人居ねぇ"、"板の主旨がよくわかんねぇ"んで
整理がつくまで、この板で細々と続けていてもいいんじゃねえかと。

つか、"ドラゴンボール"という名のつくスレと、その関連スレがある限り
あっちの板には行きたくないなぁ(w
むっちゃ厨房な質問ですみません。

フォームをデザインするとき、
ラベルとテキストボックスがグループ化されてるのですが、
これを切り離すにはどうすればいいのでしょうか?
924名無しさん@そうだ選挙にいこう:03/08/16 06:02
925名無しさん@そうだ選挙にいこう:03/08/16 07:14
>>923
ラベルまたはテキストボックスの左上にマウスポインタを
持っていくと指が一本立つマークになるのでそれでドラッグ
すればいい。
そうすれば、それぞれが別に動かせる。
926直リン:03/08/16 09:14
927名無しさん@そうだ選挙にいこう:03/08/16 10:18
フォームにおいて"123"と入力したとき、データが
"0000123"と自動的に0がついた形で入力されるよう
にしたいのですが、どのようにすればよろしいので
しょうか.データ型はテキストです。どなたかお教え
ください。
928名無しさん@そうだ選挙にいこう:03/08/16 10:35
>>927
データ型は、テキスト型でないとまずいのかな?
数値型なら、プロパティの書式欄に  0000000
と入力すればいい。
929名無しさん@そうだ選挙にいこう:03/08/16 10:56
あるフォームの中に、いくつコントロールが配置されているかって、どこでわかるんでしょうか?
ひとつのフォームの中に配置できるコントロールの数には上限があるようなので、
念のため把握しておきたいと思っています。
930名無しさん@そうだ選挙にいこう:03/08/16 11:26
>>927
様、ありがとうございました。(*゚Д゚)ソーイエバ
931名無しさん@そうだ選挙にいこう:03/08/16 11:30
>>930

×927  ○928
932923:03/08/17 06:23
>>925
お答えありがとうございます。うまくいきました。
933名無しさん@そうだ選挙にいこう:03/08/17 12:27
WORDの参考書の問題でACCESSファイルを使う問題があり、
accessを買おうとしたらpowerpointと合わせて5万とか言われて驚いたのですが
そんなにするものなのでしょうか?
office XP professionalでまとめて買った方が同じくらいの値段でいいような気がしたのですが。
また、普通のプロフェとアカデミックとの違いがわからないのですが。
アドバイスお願いします。
>>933
あー確かに高い所で買えば、その二つで5万位するかも。
ソフマップだと4万位か。
俺ならProfessional版買うかな。

アカデミック版は教育機関に携わる人の為のもの。
学生や教師とかじゃ無いと買えない。
内容はプロ版と同様だったと思う。
知り合いに学生が居れば(ry

Office2000以前のバージョンは持ってないの?
持ってるなら3万位でプロ版にアップグレード出来るけど。
ttp://www.microsoft.com/japan/office/evaluation/upgrade.asp

後はヤフオクかな。
935名無しさん@そうだ選挙にいこう:03/08/17 22:10
>>934
レス助かります。
office2000以前のものはもってなくて・・・
妹が学生なんで・・でも都合がつくまで1,2週間かかりそーです。
やっぱり学生じゃないとアカデミックは無理ですか〜。なるほど。
>>935
何の都合だ?金か?時間か?
金なら金渡して買って貰えばいいじゃん。
買う時間が無いなら仕方ないな。

幼く見られるなら学生証を借りるってのもあるが。

ついでに↓も読んどいて。
ttp://www.microsoft.com/japan/education/purchase/academic.asp
937933 935:03/08/18 07:20
>>936
忙しくてなかなか時間が・・。(;´Д`) <妹
学生証はもっていくのは本人じゃなくてもいいんですかねぇ。
>>937
アンタが社会通念の欠片も無い人間だというのはわかったから
そのネタを引っ張るのはやめてくれ。
つうか、一般の社会人だったら通常版を買えるように金を稼ぐ
努力をしろよ・・・
939 :03/08/18 12:20
>>938
もう一回入学すればいいじゃん!
俺、いいこといった!
940名無しさん@そうだ選挙にいこう:03/08/18 23:02
>>916
遅レスだけど

リストボックスには商品コードを表示させてその横にテキストボックスを
おいて、そのテキストボックスのコントロールソースを
連結した2番目の列が商品名なら
=リスト**.column(1)
としたほうがいいんでないかい。
941名無しさん@そうだ選挙にいこう:03/08/19 01:16
ACCESS2000とSQL7(2000サーバ)でISDNルータを使って
C/Sデータベースを作っているのですが、
クライアントOSを最近98、MEから、XPに変更したところルータが
勝手に発呼してしまうんです。98では問題なくちゃんとルータで
自動切断できました。
ちなみにACCESSを立ち上げなければと発呼してしません。
どなたかお助けを・・

942名無しさん@そうだ選挙にいこう:03/08/19 01:19
>>941
補足です。
XPでアクセスを立ち上げている間、
ルータはずっとつながりぱなしになります。
>>942
例のワームの対策はしてありますか?
944名無しさん@そうだ選挙にいこう:03/08/19 02:39
RAS接続で社内WANですので、ネットにはつないでおりません。
>943
>>944
赤の他人とコミュニケーションをとる場面での略語はご遠慮願いたいものです。
ネット=Internetを指しているのだろうと推測しますが、WideAreaNetworkも
LocalAreaNetworkも"ネット(という総称?)"に含まれてきますんで。
946名無しさん@そうだ選挙にいこう:03/08/19 15:40
>>941
Ethereal などのパケットキャプチャでどんなパケットガながれているかちぇっくしてみれば??
947名無しさん@そうだ選挙にいこう:03/08/19 17:18
教えてください

辻● 次郎         0323566548
鼻● 太郎         0312345678
鼻● 花子         0312345678
k下 四郎          0398765432
和歌● ありさ       0332145678
以下続く
というデータ−を
辻● 次郎         0323566548
鼻● 太郎 鼻● 花子 0312345678
k下 四郎          0398765432
和歌● ありさ       0332145678
というように電話番号が同じ人をまとめるにはどうしたら良いでしょうか?どうぞよろしくお願いします
>>947
基本的にできない。
そういうことするのは、DBMS の仕事の範疇外。
電話番号号でソートしておいて、プログラムでしこしこするのが普通。
949941:03/08/20 00:22
>>946さん

そうでした!それ試してみます。ありがとうございます。
>>945さん
その通り!ネットとはインターネットのことですよ。
推測力はすごいですね!
でも、読解力があればワーム対策に対しての返答ですので
問題ないと思いますよ。
前の「例のワーク対策はしてありますか?」でも「例」のと
推測の必要な文章が入ってるじゃありませんか。
コミュニケーションをとる場面と言われてる通り、
コミュニケーションとは相手の意を取ることも大切ですよ。
950名無しさん@そうだ選挙にいこう:03/08/20 10:50
Accessのメニューで総データ件数を知ることはできませんか?
951950:03/08/20 10:50
Access2002です
952_:03/08/20 11:12
953_:03/08/20 11:17
954名無しさん@そうだ選挙にいこう:03/08/20 12:39
>>950
え?普通にテーブルみりゃわかるじゃん。
ってそういうことではなくて?
ADO で Recordset オブジェクト作って RecordCount プロパティを見ればいいんではない?
955950:03/08/20 14:43
>>954
例えば、商品テーブルに400までデータがあったとして、

ID 品名 価格 メーカー 品種
1 アイスコーヒー 100 C社 コーヒー 


400

この場合、400*4=1600件(IDも含める?)のデータがあるとみなすのか、あくまで400なのか、どちらでしょうか?
他にも、メーカーテーブルや品種テーブルもあるなら、そっちの合計もしないといけないし。
956_:03/08/20 14:50
957名無しさん@そうだ選挙にいこう:03/08/20 15:45
>>955
フィールドまで数えるって言うこと?
つまり Null 以外のフィールドの総数を知りたいということかな?
958名無しさん@そうだ選挙にいこう:03/08/20 15:46
俺は総データ件数=行の数だと思うけど。
959950:03/08/20 17:45
就活の面接のネタに、今作っているデータベースの総データ件数を言いたくて、
それでまず総データ件数とはどこを数えるのかを知りたいんです。

>>958
全テーブルの行の数の合計=総データ件数、ということになるのかな。
960名無しさん@そうだ選挙にいこう:03/08/20 18:31
ACCES 97ってXPで使える?
使えないよ。
962名無しさん@そうだ選挙にいこう:03/08/20 20:19
>>960
使えるよ。
963名無しさん@そうだ選挙にいこう:03/08/20 20:36
>>959
だったら、つまり、テーブルの規模ってことだよね。
件数というのはあいまいだから、
レコード数、フィールド数という言い方のほうがいいと思うよ。

テーブルは複数のレコードから出来ていて、レコードは複数のフィールドから出来ている。
964名無しさん@そうだ選挙にいこう:03/08/20 20:38
>>963
そして、データベースは複数のテーブルとリレーションから出来ている。

クエリとかフォームなんかをデータベースの構成要素として含めちゃう人もいるけど、
データベースのデータをどう扱うかということであって、
別に与えられたクエリ以外のクエリを実行したっていいわけだからね。
965名無しさん@そうだ選挙にいこう:03/08/20 20:53
かなりの美少女が登場します。丸顔で笑顔が非常にそそります。
制服からしても現役女子高生なのでしょう.。
ペニスのしゃぶり方も非常にいやらしく、慣れています。
ビラビラは大きめでクリトリスは綺麗に剥けており丸見え。
出し惜しみのない本当に良い作品です。
フィニッシュは口内発射でまったく羨ましい限り。
無料画像を観てちょ。
http://members.j-girlmovie.com/main.html
966名無しさん@そうだ選挙にいこう:03/08/21 01:11
ケース記録のDB作成をしていて、
継続するものをレポートで表示できるようにしたいのですが、いい方法はあるのでしょうか?
現在、
・フォームの入力を行う際に、継続するものがあるかのチェックを入れる
・継続したものは、どのレコードからの継続かをフォーム上で入力
・なお、継続するものを連ねていく場合、ツリーにはせず最初のものの継続項目として扱う
という形になっているのですが、解決するうまい方法があたらお教えください。

自分としては、上記の方法で
継続するものをフォームからの入力で、最初だけ入力が可能。
後からの改変が不能な状態にする方法が存在すれば何とかなるのではないかと思っているのですが・・・。

環境は、Win2000、WinXPでAccessは2000です。
よろしくお願いします。
俺ならこうするかなという話だが、

フォーム上のにケース番号(かな?)のテキストボックスを
作り非表示・使用不可にしておく。
継続チェックのClickイベントをつくって、
継続チェック=True かつ新規レコードの時だけダイアログを表示して、
リストなりで元番号を選択、ケース番号に代入させる。

という感じか・・・・・

ただ、一意のケース番号+枝番号 で管理したほうが
分かりやすい気がするな・・・。
968名無しさん@そうだ選挙にいこう:03/08/24 20:38
現在、請求書発行システムのようなものを作っているのですが、
請求書の内容を登録する際のフォームは、メインフォームとサブフォームの
2つで構成されています。メインフォームとサブフォームは、会社情報と商品情報が主なため
1対多のリレーションシップが成り立っています。
このフォームで情報を入力する際には、コンボボックスを使って基本は選択して
テキストボックスを埋めていくという形を取っているのですが、その選択肢の中に希望のものがない際に、
いちいち、テーブルを開いて登録するというのは賢くないので、フォーム上のボタンをクリックすると、新たに
情報を登録するためのフォームが開くようになっています。そして、登録するとそのまま、メインのフォーム上に
反映されるようにしたいのです。
会社情報の場合は、作ることができたのですが、商品情報がいくらやっても、指定したフォームが見つかりません
といわれてしまいます。なお、組んだプログラムは以下の通りです。
Private Sub cmdOK_Click()
Dim code As String '品番

Select Case Me.OpenArgs
Case "新規商品"
code = Me!品番
DoCmd.Close
'
Forms!F_サブ!品番 = code
Forms!F_サブ.Repaint

Case Else
DoCmd.Close

End Select
End Sub

F_サブというフォーム自体は間違いなく存在するはずなのですがどなたか原因が分かる方、お助けください。
それとも、サブフォームに入力データを反映するというのはできないのでしょうか。。
できるだけ、詳しく書いたつもりなのですが、わかりづらかったら言って下さい。
>>968
もしかして、

Forms!F_サブ!品番 = code → Forms!F_メイン!F_サブ!品番 = code

ってことはないですか?
970968:03/08/24 21:18
>>969
やってみましたが、フィールドが見つかりませんといわれました。
ちなみにエラー番号は2465でした。。
>>968
F_サブが開いてないんじゃない?
972968:03/08/24 21:41
>>971
開いてないって、どういう状態のことをさしているのですかね?
情報登録のフォームを開くとサブフォームは表示されていて、
レポートにも、サブフォームへの入力内容は反映されていますけど。。
973968:03/08/24 22:27
一応、アップローダーに作ってるソフトをあげてみました。
ttp://kari.to/upload/index.cgi

[1374.jpg] お借りします 11 2003年08/24(日)22:25
これです。下の、データシート形式のがサブフォームで、
右上に小さくあるのが、商品登録です
974968:03/08/24 22:34
連続ですいません。
メインフォームから、商品登録のボタンを開いて、F_商品登録で
登録をすると、F_サブが見つからないといわれるのですが、
データベースの画面から直接、F_商品登録を実行すると
そのコメントは出てこず、テーブルのほうにも、登録したものが反映されているみたいです。
>>968
>>970のメッセージでは、>>968よりも状況が良くなってないですか?
(見えなかったフォームが見えるようになった)
あと念のために、エラー出た時にデバッグボタンを押すとどの行で止まってますか?
976968:03/08/24 23:08
>>975
いや、エラーメッセージは変わってないです。
デバッグボタンを押すと
さっき言われたとおり変更してみた

Forms!F_メイン!F_サブ!品番 = code

ここで、止まっています。
>>968
こちらでも似たような環境作ってやってみたけど、その文は問題なく動きました

Private Sub cmdOK_Click()
Forms!F_メイン!F_サブ!品番 = "1"
End Sub

でもエラーになりますか?
978968:03/08/24 23:25
>>977
わざわざすいません。
その式でもエラーになります。。
>>978
なんか、どこかでタイプミスしてないか?
おれは、こういうときの原因は大抵それなんだけど・・・
980968:03/08/25 00:06
>>978
していないです。

いま、サブフォームであった品物を管理しているクエリを単独にしたフォームを作ってみました。
ttp://www.kari.to/upload/source/d/1376.jpg ←これ
これの場合、aっていうボタンをクリックするとさっきと同じ
ttp://www.kari.to/upload/source/1377.jpg
このフォームが出てくるのですが、こちらの場合はキチンと機能します。
なお、プログラムのほうはほとんど変わらないですが
Private Sub cmdOK_Click()

Dim code As String '顧客番号

code = Me!品番
DoCmd.Close
'
Forms!F_F!品番 = code
Forms!F_F.Repaint

End Sub
こうです。

これができるとなると、メインフォームの法でできない理由は、
サブフォームの指定の仕方くらいしか考えられないのですが。。
あと、他に思い当たる原因ってなにかありますかね?
>>968
F_メインのデザインでサブフォームのプロパティのソースオブジェクトはF_サブになってるが、
名前はF_サブになってないとか?
982968:03/08/25 00:19
>>981
ネ申ですね
それでした。。
確認してたはずなんですが、アンダーバーが大文字になってたみたいです。。
すいません。ホント御迷惑をおかけしました。
ちなみに、ついにできるにはできたんですが、今度は
「このオブジェクトは、このプロパティまたはメソッドをサポートしていません」
っていうエラーが出てきました。。デバックはRepaintの所をさしています。
>>982
>Repaint
それはこちらでもエラーになってました
自分はその機能を使ったことないので・・・すみません
984名無しさん@そうだ選挙にいこう:03/08/25 00:29
>>983
いえいえ、ホント助かりました。ありがとうございましたm(_ _)m
985名無しさん@そうだ選挙にいこう:03/08/25 18:22
オートフォーム(表形式)でフォームを表示させています。

そこにチェックボックスを配置したのですが、一つチェックすると全部のレコードのチェックが入ります。
これを回避する方法はありますでしょうか。
986名無しさん@そうだ選挙にいこう:03/08/25 18:53
>>985
質問がよくわからんのだが。
テーブルをベースにしてオートフォーム(表形式)を作ったのなら
テーブルにyes/no型のフィールドあって、
それをただ表示させればよいことではないかと。
987985:03/08/25 19:26
>>986
フィールドはないのです。独自にチェックボックスを追加しました。

そのチェックボックスをチェックすると、該当レコードを非表示にしたいのですが
無理でしょうか。
988名無しさん@そうだ選挙にいこう:03/08/25 19:29
式に連結しているコントロールを編集する方法ってありますか?
>>987
Yes/No型のフィールド作らなきゃ無理だろ。
仮に「表示区分」フィールドを追加した場合、
選択クエリで「表示区分」フィールドの抽出条件に「0」と
入れれば出来上がり。
後は、フォームウィザードでクエリを元にフォームの作り直し。
そしたら自動的にチェックボックスが出てくる。
独自に追加しても意味無し。
次に、チェックボックスのイベントプロシージャ(クリック時)に
「Me.Requery」と書けば全て完了。

一旦、非表示にしたデータの再表示方法は自分で考えなさい。
990988:03/08/25 20:53
これって無理なんでしょうか?
どなたか分かる方御教授おねがいします。
991 :03/08/25 21:01
>>990
そりゃその式の値で一方的にコントロールの値が決められてしまうわけだから…
992986:03/08/25 21:01
>>987
飯食ってる間に989が答えてくれてたね。989ありがとう。
ただ、987の目的がよくわからん。
未完了データを表示させてチェックボックスに
チェックを入れると、完了データになって次回からは
表示されないとか言うの普通だと思うんだが。
そのとき非表示にしたデータが、次回フォームに表示したとき
見たいわけ。
むしろ、テキストボックスに入れたデータで表示内容が変わるとか
したいんじゃない?
993985:03/08/25 21:04
>>989
やはり、フィールドが無ければ無理ですか。
アドバイスありがとうございました。
994985:03/08/25 21:15
>>992
何をやりたかったのかと言いますと、

フォームの表示時に条件をつけて一覧を表示します。
チェックを付けるとその条件外になり、一覧から消えます。
それとは別にフォーム内に条件外のレコードだけを表示するコマンドボタンを置き、
それを押すと条件外のレコードが一覧表示され、ボタンを条件内を表示する物に置き換えます。

やっぱりフィールドがないと駄目ですよね。
独自でやろうとした考えが浅はかでした。
995986:03/08/25 21:22
>>990
テキストボックス0のデータで
別のテキストボックス2の計算式を変更したいという意味かな?
なら
テキストボックス0のLOSTFOCUSイベントに
下みたいなコードを書けばよいと思う。
Private Sub テキスト0_Exit(Cancel As Integer)
If テキスト0 = 1 Then
テキスト2.ControlSource = "=テキスト0*5"

Else
テキスト2.ControlSource = "=テキスト0*9"
End If
End Sub
996988:03/08/25 21:32
>>995
いや違います。
基本テキストボックス[金額]は[単価]*[数量]で計算をして、
勝手に入力されるようになっているのですが、○○一式で幾らといった
感じで、数量、単価で表さないものにも対応したいので、[数量][単価]の
テキストボックスに数値を入力しないでも、金額だけを「入力」できるように
したいのです。
しかし、この[金額]のテキストボックスは式と連結しているため、入力は
不可能になっている。これを回避する方法はないかなと思って質問したのです。
997989:03/08/25 22:16
>>994
フォームにレコードを表示して値の変更をしたいって事は
フィールドが無いと無理って事だよ。
その辺の理解がイマイチだから、根本から勉強し直す事をすすめる。

>>996
俺はVBA使いまくるから、俺ならボックスに直接算式を書かずに
コード記述するかな。
[金額]のEnterイベントにでも[単価]と[数量]の両方に数値が入ってれば
[金額]=[単価]*[数量]の計算をさせる。
既に[金額]に数値が入ってれば計算しない。

Private Sub 金額_Enter()
If IsNull(Me.単価) = False And IsNull(Me.数量) = False And IsNull(Me.金額) = True Then
Me.金額 = Me.単価 * Me.数量
End If
End Sub

これなら、[単価]、[数量]と入力後、[金額]にフォーカスが移動した時点で計算される。
[単価]と[数量]のどちらかでも入力しなかったら計算せず、[金額]に直接入力出来る。
ちょっと強引か・・・。
998sage:03/08/26 00:37
998
999sage:03/08/26 00:39
もしかして
1000名無しさん@そうだ選挙にいこう:03/08/26 00:39
1000来たー!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。