ACCESS総合相談所 その6

このエントリーをはてなブックマークに追加
質問される方へ
・OS、ACCESSのバージョンを明記してください
・質問内容は具体的に書いてください
 テーブル/フォームの構成、クエリの内容など差し支えない
 範囲で公開すると、早く回答が得られるかもしれません
・事前にヘルプ等で調べられる範囲は調べてください

回答される方へ
・わかる人は回答されるよう協力お願いいたします
・煽り、叩きの類は個々人の判断におまかせします(なるべく穏便に)

前スレッド - ACCESS総合相談所 その5
http://pc.2ch.net/test/read.cgi/bsoft/1033182163/
過去スレッドリンクは>>2-10
・歴代スレッド
- html化済み -
ACCESS2000総合相談所
http://pc.2ch.net/bsoft/kako/965/965614164.html
ACCESS総合相談所 その2
http://pc.2ch.net/bsoft/kako/1007/10079/1007987001.html
ACCESS総合相談所 その3
http://pc.2ch.net/bsoft/kako/1019/10190/1019087338.html

- html化待ち -
ACCESS総合相談所 その4
http://pc.2ch.net/test/read.cgi/bsoft/1027491281/
3名無しさん@そうだ選挙にいこう:02/11/21 16:38
4bloom:02/11/21 16:40
>1
乙〜。なんか、早速宣伝野郎が来てますね。暇なんでしょうか。
6みゅう:02/11/21 18:55
すいません。ちょっと聞かれたのですが、判らなくて質問しています。
レポートでラベルなどを貼ります。文字がラベルの上部にあるので、
文字位置を真中位か、とりあえず、上部に近いので下げたいのですが。
2000では上余白とは右余白などの、余白の設定が出来るのですが、
97ではプロパティの中に余白の設定がありません。
何か解決策はないでしょうか。
7名無しさん@そうだ選挙にいこう:02/11/21 21:34

Office2000SP3

Accessユーザーは注意書きをよく読むこと。
http://office.microsoft.com/japan/downloads/2000/o2ksp3.aspx
8名無しさん@そうだ選挙にいこう:02/11/22 09:38
.と!の違いがよくわからんです。ヘルプのどこに書いてあるかも解りません。
Forms!form.recordset!fieldとかわけわからん。
説明orヘルプの記載場所を教えてください。
>8
識別子でヘルプ引いてみて。
108:02/11/22 10:36
ありものか自分で作ったものかの違いというわけですか。
>Forms!form.recordset!field
と書いていて気づかないあたりが鈍いですな。thx
11名無しさん@そうだ選挙にいこう:02/11/22 10:41
WINDOWS98でACCESSは2000です。ファイルを閉じようとしたら
OLEサーバーエラーという表示が何度も出ます。
これを表示させないようにするにはどうしたらよいのでしょうか
どうぞよろしくお願いします。
1211:02/11/22 11:05
すみません、自己解決しました。
service2.symantec.co.jp/consumer/support-kb.nsf/KBLPF/39FF3919731FE81A49256AFF005D2EE5?OpenDocument&PRODUCT=Norton%20AntiVirus2002
13名無しさん@そうだ選挙にいこう:02/11/22 11:57
>>7
よく読まずに、名前の変更しないでやってしまいました。
どうすればいいんでしょう?
>>13
しらん。マイクロソフトに聞け。
15名無しさん@そうだ選挙にいこう:02/11/22 13:02
>>13
で、具合はどうなった?
16名無しさん@そうだ選挙にいこう:02/11/22 13:28
>>15
動作は変わりません。
特に問題なく動いてます。

ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP272384

に出ている単品インストールを試みましたが
蹴られました。

あとで、他のマシンでSP3を適用して、できたやつを貼り付けようと
おもってます。
17名無しさん@そうだ選挙にいこう:02/11/22 13:47
ピクチャーコントロールに2000*2000ピクセルくらいのjpegをVBAではっつけたら「対応してません」と怒られました。
GUI上ではっつけたら読みこんでくれるのに。
こういう物でしょうか?
ああ、accessのピクチャコントロールはカス中のカスだよ
たとえvbaで動いたとしてもmdeとかadeにしたら動かんし

19名無しさん@そうだ選挙にいこう:02/11/22 21:22
一応過去ログを検索したのですが、わからないので質問します。
初心者なのでお手柔らかにお願いします。
ACCESS2000を使ってレコードのとあるフィールドが
「6桁の数字/6桁の数字/・・・・/6桁の数字」
となっているデータベースを作りました
この中の"/”の数をカウントが出来ない物かと探していたのですが、
そのような関数は見つからず、instrrev関数を使って右から最後の/を探し
その値を7で割って、個数を調べようと思いました。
が、しかし選択クエリーの画面で式を入力して実行しようとしても
「式に未定義関数instrrevがあります」
と出て実行できません。
そこで質問なのですが、
1:フィールド内の特定文字の個数を返すような関数はあるのでしょうか?
2:選択クエリの画面ではinstrrev関数は使えないのでしょうか?
  使う為にはどうしたらいいのでしょうか?

ご存知の方がいたら教えてください。
>19
ちなみに私はこのようにしてみました…
Accessのモジュール(標準モジュール)で以下の関数を作成

Function M_Len(strX) As Long

Dim lngX As Long  ' InStr()で検索する時の開始文字数
Dim lenX As Long  'データの文字数、ここではテキスト型が前提
Dim lngcountX As Long  '「/」の数の格納

lngcountX = 0
lenX = Len(strX)
lngX = 1
Do
  lngX = InStr(lngX, strX, "/")
  If lngX = 0 Then
    Exit Do
  End If
  lngX = lngX + 1
  lngcountX = lngcountX + 1
Loop
M_Len = lngcountX
End Function

クエリーにはとりあえずクエリー上に新しくlenと言うフィールドを作成し、
検索するデータはTestと言うテーブルのrecordフィールドと仮定して
デザインビューでlen: M_Len([Test]![record])としてみました。
そうするとlenフィールドに「/」の数が表示されます。

既に「知ってるよ、解決した」と言う状態であれば余計なお節介でした…
2219:02/11/23 02:17
>>20
>>21

お返事送れて申し訳ありませんでした
色々丁寧にありがとうございます
早速試してみようと思います。
前スレはもう閉じたんだ・・・
まだ使い切って無かったけど 貧乏性なのかね? もったいない気がして
でもくだらないスレッドが続くよりましかも
>>23
何が言いてーんだ。雑談なら余所でやれ。
>24
まだ大丈夫だと思って、取るのを忘れた。過去ログ倉庫に着くのも遅いから
980台は安全かなと思っていたら消えていた。
2617:02/11/23 13:00
>>18氏のレスを読んで自前でピクチャウィンド用DLLを作ってます。ハァ
>>21
ループで文字数をカウントする方法は、文字列長が大きい場合、遅くなる。
使用目的によっては、VBSのRegExpオブジェクトを使った方がよい場合もあるかも?
>21
その使用目的と"VBSのRegExpオブジェクト"…
ちょっと教えてもらえませんか?
VBSのRegExpオブジェクトとは?
どういった使用目的だったら的確でしょう?
2928:02/11/23 15:36
↑ああああっ 大きく誤爆
>21は>27でした
キーワード教えて貰ったらヘルプやGoogle逝けよ。
ガキじゃあるまいし、そんくらいの知能持て。
>28
自分で調べろ…というのは確かにそうだけど…
まぁ、Access固体のものではないからなかなか分からないかもね。
あまり「自分で調べれ!」って言うのも、スレの雰囲気悪くなるからちょっと教えてあげるね。

VBSはVBScriptと言ってAccessのVBAと似たものですが、ちょっと違います。
で、RegExpオブジェクトとはテキスト処理によく使われる正規表現と言うものに使用するものです。
このあたりはAccess固有のものじゃなくってかなりプログラミングに近いから、
ちょっとAccessでVBA使ってる…って言うくらいでは知らないかもしれませんね。
32名無しさん@そうだ選挙にいこう:02/11/25 06:30
質問です。MDBで作成した表をADP(アクセスプロジェクト)にインポートしたいのですが、
キーの情報がインポートされない為なのか、件数が多い表はオーバーフローして、インポートが出来ません。
そこで回避方法なのですが、
MDB側がらODBC経由でエクスポートする方法なんか試してみようと思いますが、何かもっとよい方法はありますか?
33つくば山 ◆A/Mt.tkb1k :02/11/25 09:32
すみません、Access2000 のマクロについてです。

マクロの、「アプリケーションの実行」で複数のdosコマンドを実行させるのですが、
ひとつのコマンドか完了してdosプロンプトが閉じてから次のdosコマンドを実行
させたいのですが、どうすればいいのでしょうか??
>33
バッチファイル作れば?
>>33
WindowsScriptingHostで
WshオブジェクトのRunメソッドを使え
>32
csv吐いてBULK INSERT
37つくば山 ◆A/Mt.tkb1k :02/11/25 15:26
>>34
ありがとうございます。気づきませんでした。メカラウロコ...
バッチファイルは動作確認用に作ってたんで、それを直接指定したら思い通り
の動きをしてくれました。

>>35
WSHもいいですね。
バッチファイルよりもそっちのほうがカッコイイかも・・
38名無しさん@そうだ選挙にいこう:02/11/25 19:23
すいません。教えて下さい。現在ACCESS97で
Dim AAA as Double と定義して、ここに小数点第5位切り捨てで数字を入れたいのです。
AAA = 777.77777777・・・ とやると、AAAに777.7777が格納する形です。
一万倍してFIXして再び一万で割ってあげるしかないのでしょうか?
お願いします。
roundあるだろ
>>33
まず、必要なバッチファイルを生成し、
Shellで、vbHideを指定して非表示でバッチを起動する。
シェルのコマンドラインに/Cスイッチを指定すれば、実行終了後、Windowは閉じる。
↓こんな感じ。

Call Shell(Environ("COMSPEC") & " " & バッチファイル名 & " /C", vbHide)

API関数を使えば、バッチの実行完了まで待機できる。
そして、終了後にバッチファイルを削除してしまえば、後には何も残らない。
こうした方法を使えば、ユーザーがバッチファイルの存在を意識することのないUIが実装できる。

- 以上 -
>>39
それが97には存在しないのですよ・・・
とほほ・・・
42名無しさん@そうだ選挙にいこう:02/11/25 20:01
>>41
Excelに参照設定してからROUNDDOWN
>>42
やはり97単体では解決できませんか・・・
ありがとうございました。
>>43
整数部分と少数部分に分けて、小数部分だけ一万倍して丸めてから加算
45名無しさん@そうだ選挙にいこう:02/11/25 22:11
ダブル使うとどうしても量子化誤差が生じるよ!
工夫してString や Integer で持つようにしたほうが安全な気がするよ!



ところで、SQLサーバーでTrue/False 型(Bit型)をWhere句で使いたいのですが、
ADO で ”Where フラグ = True" とすると、通りません。どう使えばよいのでしょうか?
>45
= 0 、 <> 0
>45
vbaのtrue(-1)とsql serverのtrue(1)の値が違うからだと思われ。
48名無しさん@そうだ選挙にいこう:02/11/25 23:14
小数点以下は4桁までしか使わないのなら、通貨型を使う手もあり
49名無しさん@そうだ選挙にいこう:02/11/25 23:15
>>45
Trueの代わりに-1、Falseの代わりに0
SQL Server Books Onlineより
> SQLServer2000 仕様 データ型
> bit 整数型であり、1、0、または NULL のいずれかの値をとります。

booleanではないところに注目すべし
大体、true falseは定数だしょ
まぁ、評価する式は
Select ... From Table_name Where hoge = 1;(又は hoge <> 1)
Select ... From Table_name Where hoge = 0;(又は hoge <> 0)
と、すれば良いわけだが。(値は"'"シングルクォーテーションでくくらない)

SQLクエリアナライザで、"hoge = True"って評価式を含む SQL文を投げると
「エラーだよ〜ん」って言われるでしょ?
5345:02/11/26 00:19
みなさんありがとうございます。涙
大変助かりました。

サービスパック入れたらヘルプが出なくなったもんで。
本当にありがとうございます。
54名無しさん@そうだ選挙にいこう:02/11/26 12:40
またまた膣門れす。

アクセスプロジェクトとMDBでソースを共有したいのです。
コンパイルオプション使うことを考えていますが、MDBなのかADPなのか
自動で判別する仕組みなんて有りますか?
拡張子が違うだろ
56名無しさん@そうだ選挙にいこう:02/11/27 06:54
ADBだった
57名無しさん@そうだ選挙にいこう:02/11/27 09:59
帳票フォームのカレントレコードに応じて別のフォームのレコードセットを書き換えたいのですが
Current()ハンドラ内でMe.RecordSource!〜と書くと移動する前のレコードを参照しているようなのです。
これを何らかの方法で、移動先のレコードを参照できませんか?
58名無しさん@そうだ選挙にいこう:02/11/27 10:01
間違えましたMe.recordset!〜です。
5957:02/11/27 11:03
補足
エディットコントロール:CLotNum
コントロールソース  :lotNum
として以下のようにしたところ
Private Sub Form_Current()
Debug.Print Me!CLotNum & "," & Me.recordset!lotNum
End Sub

コントロールに連結された値は Me!CLotNum で移動後の値が取れるみたいです。
ただRecordsetの更新が行なわれていない状況なのか、RecordSet!lotNum だと移動前の値が参照される模様。
60名無しさん@そうだ選挙にいこう:02/11/27 12:29
よくわからないけど、Requery や Refresh じゃ駄目?
>57
つーか、主キーはないのか?
非表示にしておけばいじられずにモジュールで値をセットすることもできるが。
>57
フォーム1に表示されているデータを1つ選択すると
フォーム2のコントロールあるいはデータに反映されると言うことでしょうか?
>RecordSet!lotNum だと移動前の値が参照される模様
と言うのはフォーム2での話でしょうか。

フォーム2のコントロールに反映させるならば、
フォーム1のデータを選択した時点で、フォーム2のコントロールに強制的に値を送るとか。
フォーム2の帳票に反映させるならば、フォーム1のデータを選択した時点でフォーム2を
リクエリー賭けるとか(そのまま出来なければ、一度帳票を非表示にて別の帳票をリンクさせるなど)、
あるいは親リンク/子リンクの関係を作るとか…?
…的外れだったらゴメソ…
6357:02/11/27 13:07
「非表示ってのは見えるけど触れないってやつだな」と思ってたら跡形も無く消えてくれるんですね。
「可視」オプションを「いいえ」にして、 Me![連結されたコントロール名]で上手くできましたありがとうございます。
あんまし Me.recordset!〜 という使い方はしないのでしょうか。
64名無しさん@そうだ選挙にいこう:02/11/27 13:10
レポートでA4用紙半分だけ使う帳票があります。
これが3枚一組で、つまりA4用紙2枚目は半分しか使わない訳です。

毎月、3枚一組を10セットばかりうち出すので、
この1セット目の2枚目の残り半分に2セット目の1枚目を印刷すると
無駄が無くて良いかなと思うのですが、こんなの実現する術ありますでしょうか。
6557:02/11/27 13:15
>>62
>フォーム1に表示されているデータを1つ選択すると
>フォーム2のコントロールあるいはデータに反映されると言うことでしょうか?
はいそうです。

>と言うのはフォーム2での話でしょうか。
違います。フォーム1(帳票ビュー)のCurrent()ハンドラでフォーム2(帳票ビュー)のレコードソースを書き換えます。
フォーム1でレコードを1番目から2番目に移動した場合に、フォーム1のCurrent()ハンドラでの
Me.RecorSet!〜 の値が2番目のレコードを指していて欲しいのに、1番目のレコードを指している。ということでした。
6657:02/11/27 13:17
↑ちなみにACCESS200 SR-1です。
67末吉亮介:02/11/27 13:19
>57
例えばフォームのプロパティで「可視」=いいえにしなくても、
「フォーム1のレコードを書き換えたら…」と言う条件で(条件は帳票がどのようなものか
分からないので何ともいえません。ものによっては出来ないのでコマンドボタンを使うのも手かも)、
プロシージャでForms!フォーム1!コントロール名.visible=Falseを使うと
非表示になります。で、再度、Forms!フォーム1!コントロール名.visible=True
にするとリクエリーかかって最新の情報になったりする…はずです…
69名無しさん@そうだ選挙にいこう:02/11/27 15:45
質問です。 Access97/Windows98 で、Access2.0 の MDB ファイルを変換できません。
どうも、Access2.0 でセキュリティ設定がされているようなのですが、セキュリティ設定を
無効にして変換する事はできるのでしょうか?
>64
書かれている文章の意味が分かりませんが・・・
VBAでなんとかなりそうな気がしないでもない
でもめんどくさそうなので、今のままで出力に問題ないならこのまま逝けば?
7164:02/11/27 18:44
>>70
レスどうもです。確かにわかりにくいですね。。。スマソです。
現在は、A4用紙サイズのレポートを作り、そこに2枚分貼り、別のレポートに
1枚分はっているのですが、この残り半分の空きが非常に癪なのです。
紙の無駄も去ることながら、癪という感じが痛いのです。
VBAっつかコードでレポートを合体させるみたいなことが可能なんですか?
72名無しさん@そうだ選挙にいこう:02/11/27 23:15
みなさん、非正規化になってしまっているデータを第1正規化するのどうしてますか?

ex)
氏名 商品1 購入日1 商品2 購入日2

氏名 商品1 購入日1
氏名 商品2 購入日2


手作業でやる以外になにかいい方法ありますでしょうか?
(あとは、アクセスで同様な列の繰り返し分だけクエリ使って同様な
テーブルを作成し追加クエリでひとるのテーブルにまとめるとか。。。)
>71
帳票のソースデータを一つにまとめるのが手っ取り早いでしょう
ユニオンクエリをソースにするとか。
>>73
どもです。分かりづらくてスミマセン。
ソースをまとめても、レポート自体をまとめる術が無いとどうしようもアレですよね。。。
ええと、図とか書けないタイプなんで、一番簡単に書くと

 日 ← これを一枚のA4用紙として見て下さい。。。(w
      真ん中の線でA4用紙を横半分に切って使っているのです。
      これは領収書の類で、所謂、A5サイズって言うのでしょうか。

 日日 ← で、1セットが3枚、つまり左図の2つめの日の上半分を使い、下半分は空白なのですが、

 日日/日日 ← 2セット同時に出した時、一枚半/一枚半と出すのでは無く、
 日日日   ← 3枚に2セット分を納めたいです(2枚目の下半分を使う)。



・・・ここまで書いておいてアレですが、無理な気がしてなりませんね。。。(w
おながいします。。
>>72
よく分からないですが、SQL投げて移動させるのではダメなのですか。
76名無しさん@そうだ選挙にいこう:02/11/28 01:17
ACCESSをXPで使うとフォームなどのグリッド数変えても変わりません。
どうやって細かくしたりするんでしょうか?



>74
いやだから全セット分のデータを作っちゃうわけです
7872:02/11/28 01:27
>>75
すみません。移動というのは具体的にどのようなSQLをなげるのでしょうか?
79名無しさん@そうだ選挙にいこう:02/11/28 07:08
>>74

レポートを2セット出力するには、レポートの印刷をパラメータ等を変更して2回実行するのですか?

レポートのデータソースがテーブルだとすると、
2セット分の情報を2つのテーブルにまとめれば、連続して出力可能だと思うのですが?
80名無しさん@そうだ選挙にいこう:02/11/28 07:31
>>57
親フォームと子フォームの関係は、例えると、
イ)
 親:町内会の世帯主の氏名一覧
 子:世帯員一覧

こんな感じでしょうか?
それとも
ロ)
 親:町内会の世帯主の氏名一覧
 子:商店なら、扱っている商品の一覧
  会社員なら、勤務先住所

イであれば、アクセスの標準的な機能を使用して簡単に実現できます。
ロのばあいは、おっしゃるとおり、親フォームのレコード移動イベント(ハンドラ)でサブフォームのレコードソースを書き換える方法をとる事になると思います。
 それで、問題なく動くような気がします。

>>69
セキュリティーファイル(パスワード等が保存されたファイル)を削除したらアクセスできるようになったような気がします。
拡張子が何だったのか忘れたけれど、試してみたらどうでしょうか?

>>72
おっしゃっている通り、列の個数分クエリ(またはSQL)を作成するほかなさそうですね!
だけど、件数分の手作業と比較すると十分に楽なような気がしますが。
Aフォーム内にBサブフォームがあるのですが
リクエリする場合
DoCmd.Requery "Bフォーム"

Me.[Bフォーム].Requery
とするのでは違いがあるのでしょうか?
一緒。
83さっ:02/11/28 14:21
Accessにて印刷をしようとすると右端の一部が切れてしまいます。
余白調整を行ってもうまく行きません。
どなたかおわかりになる方、宜しくお願い致します。
8481:02/11/28 14:25
>>82
ありがとうございます。

もう一つなのですがAフォームのaテキストボックスを
Bサブフォームで指定する場合は「Me.aテキストボックス」でいいのでしょうか?
あるいは「Me.Aフォーム.aテキストボックス」とするのでしょうか?
Me.Parent.Forms.aテキストボックス
だったような気がする
>>81
Docmd.Requeryって
Access2000でコンパイルエラー起きない?
87さっ:02/11/28 14:34
ちなみに印刷プレビューでもうまく行きません。
8881:02/11/28 14:50
>>85
ありがとうございます。
ヘルプでParentを調べてみます。

>>86
環境書き忘れました…Access2002です。
DoCmd.Requery "Bフォーム" と記述してますがコンパイルエラーは
起きてません。

Aフォーム上のコマンドボタン作ってクリックするとBサブフォームの特定レコードを指定する
メッセージボックスが現れます。(このときAフォームは最小化してます)
そこで「OK」で削除実行するとBサブフォームの削除されたレコードに「Delete」となりますよね。
これを回避したいので「OK」のクリック時に記述しているのです。

DoCmd.SelectObject acForm, "Aフォーム", False
DoCmd.Restore
DoCmd.Requery "Bサブフォーム"←ここ
 
Me.[Bサブフォーム].Requery←こうしたほうがいいのでしょうか?

8981:02/11/28 15:06
>>85さんへ
Me.Parent.aテキストボックスでOKでした。
ありがとうございます。
90その1:02/11/28 21:36
>88
AフォームとBサブフォームがどういった関係で、どのようになってるのかよく分かりませんが、
(例えばBサブフォームはソースがクエリーで、Aフォームの中に埋め込まれているとか)
とりあえず似たような環境でAccess2000で作ってみました。

テーブル:Testと言う名でidはオートナンバー
フォームA:TサブフォームBとコマンドボタンが組み込まれている
サブフォームB:フォームAの中にあり、"Testのサブフォーム"をソースオブジェクトにしている

Private Sub コマンドボタン_Click()
Dim lngX As Long
lngX = InputBox("削除するIDを指定")
DoCmd.RunSQL "DELETE Test.id FROM Test WHERE ((Test.id)=" & lngX & ")"
DoCmd.Requery "サブフォームB"
end sub

これで問題ありませんでした。

>Aフォームは最小化してます…とのことからフォームCにコマンドボタンを作成し
Private Sub コマンドボタン_Click()
DoCmd.Minimize
lngX = InputBox("削除するIDを指定")
DoCmd.RunSQL "DELETE Test.id FROM Test WHERE ((Test.id)=" & lngX & ")"
DoCmd.SelectObject acForm, "フォームA", False
DoCmd.Restore
DoCmd.Requery "サブフォームB"
では、「実行時エラー2109:カレントレコードにはサブフォームBというフィールドはありません」
で#Deletedになります。
MsgBox Me.Nameで今操作していると思われるオブジェクト名を得ると総て"フォームC"です。
また1行ずつステップインしてもフォームCが動きます。
と言うことで、前の処理がどうなっているのかは分かりませんが、
上手く"Bサブフォーム"が受け取れていないのではありませんか?
91その2:02/11/28 21:37
フォームCのコマンドボタンでも
ちなみに下記のように一度閉じるて開くと問題ありません。

Private Sub コマンド_Click()
Dim lngX As Long
DoCmd.SelectObject acForm, "フォームB", False
DoCmd.Minimize
lngX = InputBox("削除するIDを指定")
DoCmd.RunSQL "DELETE Test.id FROM Test WHERE ((Test.id)=" & lngX & ")"
Forms!フォームB!サブフォーム.SetFocus
DoCmd.Close acForm, "フォームB"
DoCmd.OpenForm "フォームB"
end sub
92訂正:02/11/28 21:40
>フォームA:TサブフォームBとコマンドボタンが組み込まれている
↓訂正
フォームA:「サブフォームB」がサブフォームとして
       「コマンドボタン」がコマンドボタンとして組み込まれている
93訂正2:02/11/28 22:36
すみません…再度、作り直してやってみたらAccess2000では下記で問題ありませんでした。
Private Sub コマンドボタン_Click()
Dim lngX As Long
DoCmd.SelectObject acForm, "フォームA", False
DoCmd.Minimize
lngX = InputBox("削除するIDを指定")
DoCmd.RunSQL "DELETE Test.id FROM Test WHERE ((Test.id)=" & lngX & ")"
DoCmd.SelectObject acForm, "フォームA", False
DoCmd.Restore
DoCmd.Requery "サブフォームB"
End Sub

それから91は
「フォームB」→「フォームA」、「コマンド」→「コマンドボタン」、「サブフォーム」→「サブフォームB」
Forms!フォームB!サブフォーム.SetFocusは不要です。
9481:02/11/28 23:01
>>91-93
遅くにありがとうございます。
自宅ではAccessがないので明日試させて頂きます。
9581:02/11/28 23:05
訂正
 誤 91-93
 正>>90-93
スミマセン…
96saekimain:02/11/29 00:23
誰かAccess2002コピーさせて!
>>96 氏ね
9881:02/11/29 09:26
>>90-93さん
今朝、93で確認し、出来ました。
ありがとうございました。
9990-93:02/11/29 12:16
>81
解決してよかったですね
一体何が原因だったのでしょう…
100名無しさん@そうだ選挙にいこう:02/11/29 16:57
フィルタをクエリとして保存するにはどうしたらよいでしょうか?
同条件のクエリをつくってくれ
102名無しさん@そうだ選挙にいこう:02/11/29 22:55
accessでデザインビューをいじれないようにするには、MDEファイル、管理者
を決めてセキュリティを確立するやりかた等があると思いますが、
それ以外に、デザインビューをいじられないようにするやり方ってありますか?
長くなるため、なぜそれ以外のやり方を望むのかは省きますが、なにか簡単な方法なないでしょうか?ただ単にデザインビューだけいじられないように
したいだけなのですが、よきアドバイスをお願いいたします。
>>96
うちコピー機ないからセブンイレブンでコピってくるけど、それでいい?
起動時の設定でメニュー落としてシフトキーのエスケープはじいとけよ
105100:02/11/30 09:25
>>101
それはそのとおりなのですが、そのような問題があったものですから
106教えてください:02/11/30 11:07
adoのレコードセットをレポートに表示したいのですが

カレントレコードを取得して
reports!レポート名!テキストボックス = rs!フィールド名

でいかないんです。エラーも出ないし。。。
どなたは教えてください
>>102
ロハでは教えたくない。
対価を支払う意志はありますか?
そして、その金額は?
>>106
レポート内のイベントに
Me.テキストボックス = rs!フィールド名
とか
109教えてください:02/11/30 15:18
ありがとうございます。

>107
ロハってなんですか??
どんな対価でも

>106
それはやってみました。が,だめです。
ちなみに,MEの使い方が違います。
と言われました。うーーーん

なんかいじってたら,
このオブジェクトには値の代入はできません
という。エラーがでてきた。
あーーーなんなんだ???
やはり,createreport とか set wiht ってやつを使うのだろうか?
でもうまく使えない・・・・

110教えてください:02/11/30 15:20
>107
すみなせん
私ではなかったですね
>>106
フォーマットイベントの中でレコードセットを取得するコードを書いて、
そのレコードセットの値をテキストボックスに表示したいって事だよね??

me… オブジェクト  TextBox1… オブジェクト。。。
me.TextBox1=Valueの書式が暗黙的に許されるケースもあるんだけど
この式は厳密には、オブジェクトに値を代入しようとしているんだよ。
多分、この式をこんな風に直したら動くんと違うかな?
me.TextBox1.Text = Cstr(Nz(RS!Field,IfNull))

Fieldが空の文字列だった場合に RS!FieldはNull値を返すので、NZ関数で
Nullだった場合の問題を解消してやっておいて、さらにそれをCstr関数で
String型の値に変換してやる。こうすれば左辺はテキストボックスの
TextプロパティでString型だし、右辺もString型で代入時にエラーが出るって
事はなくなると思うよ。
112教えてください:02/11/30 17:46
>111
ありがとうございます
さっそくやってみます
113教えてください:02/11/30 19:07
>111
なるほど,意味がわかりました。
フォームでやったときは同じようにしてテキストボックスに入ったので
なぜ,レポートではできない陰だろうと思っていました。
ところが!今こんな事態が起こっています
コントロールがフォーカスを取得していないからダメ
→レポートをアクティブにして setfocus で取得したいのですが
Do cmd.OpenReport"レポート名",acViewPreview
Dim rpt As report
Set rpt = ScreenActiveReport
Me!txtbox1.SetFocus ここで「このビューではこのメソットは使用できない」とデバック!

うーーーーーmmm
プレビューがダメなの?んなわけないですよね
114102:02/11/30 19:30
お金ないんです・・・・。
誰か教えてよ。。。。(ぐすん
115教えてください:02/11/30 19:38
>102
104さんのじゃダメなの?
起動時の設定!
116102:02/11/30 19:38
1000円なら支払います
117名無しさん@そうだ選挙にいこう:02/11/30 19:39
116は偽者です。
118107:02/11/30 21:48
>>114
お金がないなら、自分で苦労して調べるべき。
お金も掛けず、苦労もしないで、成果だけ得られるうまい話はない。

ちなみに、
>>102
の内容は、WEBで検索可能。
キーワードは、

・AllowBypassKey
・AllowSpecialKeys
・Modal
・作業ウィンドウ固定
・ポップアップ

あたり。
(オレって甘いよな・・・)
119名無しさん@そうだ選挙にいこう:02/12/01 01:09
>>109
ロハ = ロ = 只
      ハ

>>113
フォームモジュールからはレポートのテキストボックスを直接いぢれないけど・・・

データをテーブルに吐き出して、そのテーブルをレポートのレコードソースにするのではダメ?
120教えてください:02/12/01 07:36
>119
ありがとうぞざいます。
それができればこんな苦労はしないんです。
実はこれ,私のではなく,私の隣に座っているお姉さんのなのですが,
最初のテーブル設計が超超おかしくて
そして,いきなり,ADOに突入しちゃったもんだから
今回のも,普通ならクエリーを一つ作れば簡単なことだったのですが
リレーションが組んでいないんです。そして,組めるようなデータ構造じゃないし。
(°Д°)ハァ?
>>120
> 私の隣に座っているお姉さんのなのですが,

なんか意味深...。
ACCESS2000使ってます。
複数ある事務所の情報の管理をしたいのですが、
事務所には全て番号が振ってあってそれで管理してるんですが、

100
101 101-1 101-2
103 103-1

といった風に、主事務所と、それに従事務所がついてくる場合があるんです。
それぞれの事務所では事業内容が異なるのですが、主-従の場合は同じ
事業内容なので、自分としてはこれをまとめて一つのテーブルで管理したいんです。

事務所の事業内容 事務所の住所

というような2つのテーブルに分けて、リレーションシップで繋ぎたいんですが、
問題は、この元となるデータがexcelファイルでして、これをAccessにインポートして
使わなければいけないってことなんです。
元となるexcelデータは、

事務所所属者 事務所所在地 事業目的

の三つの部分から成り立ってまして、事務所所属者と所属する事務所の二つに
テーブルを分けることには成功しているんですが、所属する事務所とその事業目的を
分割するのが上手くいかなくて…。

事務所に振り分けている番号でテーブルも分割してしまいたいんですが、どうも-がネック
になっているのか、なかなか分割することが出来ません。

100(主事務所) 100-1(従事務所その1) 100-2(従事務所その2) と事務所がある時、
これをうまく二つのテーブルにまとめることは出来ないでしょうか?

うまく説明できなくて申し訳ありませんが、よろしくおねがいします。
んじゃあハイフンじゃなくアンダーバーんいすりゃいいじゃんか。
>123
>100(主事務所) 100-1(従事務所その1) 100-2(従事務所その2) と事務所がある時、
>これをうまく二つのテーブルにまとめることは出来ないでしょうか?
どう分けたいのでしょう?
例1)主事務所テーブル:id、事務所番号(100とか102など)、所在地、事業目的
   従事事務所テーブル:id、事務所番号(100-1とか100-2など)、所在地、事業目的
こうだとすると、一度Excelからインポートしたデータをコピーして失敗した時の保証にとっておきます。
で、削除クエリーで事務所番号*-*を削除すれば「主事務所テーブル」ができますよね?
この時、オートナンバーで事務所番号とは別のid(主キー)をつけた方が良いと思います。
さらに元のテーブルをコピーして、-*がついていないものを削除すれば、「従事事務所テーブル」。
この従事事務所テーブルに「主事務所」フィールドを追加して、出来れば主事務所テーブルのid、
ダメなら事務所番号を書き込むように、更新クエリーを作って更新します。
そしてオートナンバーで主キーとなるidフィールドを作成すると言うのはどうでしょう?
その上でリレーションすればいいと思いますが?

それとも
例2)事業内容テーブル:id、事務所番号(100とか100-1など)、事業目的
   住所テーブル:id、事務所番号(100とか100-1など)、所在地
でしょうか?だとしても、上と同じ方法で必要なテーブルを作っていけばいいと思いますが?

この方法では出来ませんか?
>>125
> 従事事務所テーブル:id、事務所番号(100-1とか100-2など)、所在地、事業目的

従事事務所は、主事務所と事業目的が同じだから、事業目的フィールドは不要だと思う。

まあ、俺なら主事務所と従事事務所を別に分けないで...

事業目的テーブル: 主事務所番号, 事業目的
事務所テーブル: 主事務所番号, 事務所番号, 所在地

とすると思う。(って、よく見たら >>123 に「事務所の事業内容 事務所の住所 というような2つのテーブルに分けて」と書いてあるし...。

ところで、>>123 に確認したいのだが、元の Excel ファイルには 事務所所属者 のデータはあるのだがこれはどうするの ?
あと、もとのデータに 主-従 のデータはないのか ? 適当な事務所を 主 にすればいいのか ?
127123:02/12/01 17:47
インポートしてくるexcelファイルは、フィールドが
所属者名・事務所No・事務所名・住所・事業目的
というような構成になっていて、これに内容が書き込んであるものです。
で、
◎山△子・100・事務所名・住所・事業目的
△川◎雄・100-1・事務所名 従事務所名・住所・事業目的
×田×彦・101・事務所名・住所・事業目的

というような感じで、行ごとにデータがまとめられています。
それで、事務所は移転したり閉鎖したりがあるので、
情報はまとめて書き換えられるようにしたいんです。

現時点では、
事務所所属者テーブル 
…所属者名・登録番号・所属者の個人情報

事業所テーブル
…事務所番号・事務所名・住所・電話番号・事業目的

というような感じになっています。
この状態だと主事務所と従事務所の事業内容の変更をする時、
100と100-1と、両方の書き換えをやらないといけないのが面倒なんですよね。
(事務所番号で、主事務所の100と従事務所100-1が別々のレコードになっている為)

主事務所に「-n」の番号がないのが敗因だとは思うんですが、今から番号を追加する
のは不可能なので、できればテーブルに、主事務所の番号フィールドを追加するとか…
そういう方法を模索していたんですがみつけられませんでした…。

元のデータには主-従のデータはありません。(主事務所が-nなし、従事務所-nあり)
一応、VBAで主事務所の番号をフォームに表示させるところまではできたんですが、
そこから先がさっぱりなんです。・゚・(ノД`)・゚・
128123:02/12/01 18:04
>125さん
例2の方向でできればまとめたいんです。
1)事務所番号・事業目的 のテーブルと、
2)事務所番号・住所・電話番号 のテーブルの2つに分けて、
尚且つ2)のテーブルには、主事務所と従事務所両方をまとめておく。
そうすると、事務所別資本金ランキングを作る時も、1)に資本金データを
追加しておけば、すぐに出来あがると思われるんで。

ややこしくてスミマセン…。
>>127
と言うことなら、

事業目的テーブル: 主事務所番号, 事業目的
事務所テーブル: 主事務所番号, 事務所番号, 事務所名, 住所
所属者テーブル, 事務所番号, 氏名 (ところで、同一姓の香具師はいないのか ?)

で良いと思う。

> インポートしてくるexcelファイルは、フィールドが
> 所属者名・事務所No・事務所名・住所・事業目的
> というような構成になっていて、これに内容が書き込んであるものです。
> で、
> ◎山△子・100・事務所名・住所・事業目的
> △川◎雄・100-1・事務所名 従事務所名・住所・事業目的
> ×田×彦・101・事務所名・住所・事業目的
> …
> というような感じで、行ごとにデータがまとめられています。

まず、VBA とかで、Excel ファイルを整形した方が良いよ。

氏名, 事務所番号, 主事務所名, 事務所名, 住所, 事業目的

ぐらいにする。ここまでは、できる ?
130125:02/12/01 18:49
>123さん
先ずは、テーブルを作りましょう。総てはそれからです。
2つのテーブルのデータの同時書き換えうんぬんや表示は後の話。
同時書き換えは、DAOを使ってプロシージャ内で2つのテーブルを開いて
両方で.edtと.updateすれば問題ないですから。
データベースでは、テーブルの構成の良し悪しが後まで残ります。

私も>129さんの方法になると思います。
例えばExcelのファイル(あるいはシート)をコピーして、各テーブル用にします。
それぞれのファイル(あるいはシート)は各テーブルに必要なものだけにして、他の列は削除します。
それをAccessでインポートすると各テーブルにそった内容のテーブルが出来上がると思いますが?
後は、インポートしたテーブルにフィールドを追加して、内容を変更したり追加したりは、
初めの基となるデータを作るために一時的にクエリーで操作すればいいことです。
それから、インポートしたら後が楽になるようにテーブルの各プロパティ(データ型など)を調整した方
がいいと思います。
基となるテーブルさえ作れば、後は楽ですから…。頑張ってください。

個人的には、入力フォームなどを作成して入力から自動的に行うならば、私的にはオートナンバーで
番号の他にidを振る方が好きですが…。特にこの場合、番号に-が入っているのでDAOでのやり取りなど
idで数値型にした方が私的には楽だと思いました。
131125:02/12/01 19:13
>123さん、ちなみに
>主事務所に「-n」の番号がないのが敗因だとは思うんですが
テーブル内のデータを完全に単一の者と見分けられるように事務所番号とは別にidを振れば、
事務所番号は単なる「名称」となるので、-nがついていようがいまいが関係なくなります。
コンボボックスなどで連結をidにし、表示を事務所番号にすれば検索も楽になるのでは?

>主事務所と従事務所の事業内容の変更をする時

>それぞれの事務所では事業内容が異なるのですが、主-従の場合は同じ
主-従で住所は違うのでしょうか?事業目的は必ず違いますか、重複してませんか?
を考えると、条件によっては下記のテーブルに分けるかもしれません。
事務所テーブル:id、事務所番号(100とか102-1など)、事務所名、所在地id、事業目的id、所属者id、
           主事務所id(従事務所であれば主になる事務所idを加え主事務所なら0にしておく)
所属者テーブル:id、所属者番号、所属者個人データ
事務所データテーブル:id、事務所id、資金データなど
所在地テーブル:id、所在地データ
事業目的テーブル:id、事業目的 ←この場合複数の事務所で同じデータを使える利点がある
こういったテーブルの作り方もあります。
132123:02/12/01 20:20
>129さん
同一姓どころか、同一姓名の人がいたりします…。
名前・事務所は同一名(なのに別人・別事務所)ということが多々あるので、
名前での分類は諦めています。ID・もしくは登録番号・事務所番号での管理が一番ですよね。

VBAでの整形ですか? どうやるんでしょうか。(汗)
Access始めて二ヶ月の初心者なのに、頼りになるのはヘルプだけなので、今非常につまづいて
しまっているんです。Excelの段階で整理してしまうってことでしょうか?

>125さん
インポートする前段階で、excelファイルの方に主事務所の番号フィールドを作って
しまうということでしょうか?
そうですね、最終手段はそれが一番早いかもですよね……というか、当初はそれで
データベースの作成もしていたんですけども。(上手くいかなくて途中で止めましたが)

とりあえず、やはりもう一度テーブルの構造から見直す必要がありそうですね。
ありがとうございます。
133123:02/12/01 20:22
うっ、書きこみが前後してしまいました…スミマセン
134125:02/12/01 21:19
>133 123さん
別にExcelの時にid振る必要はまったくありません。
インポートした後にidフィールドを追加してオートナンバー形式にしてしまえば自動的に振られます。
そうした形で、必要なフィールドをインポート後に追加することが出来ます。
ただ、インポートしたテーブルは原型のまま取っておき、初めはコピーしたテーブルでいじった方が
何かとトラブルの時便利だと思います。

後、月並みですが本屋へ行って1冊あなたに合ったAccessの本買うのも一つかと思います…
135129:02/12/01 21:40
>>132
> 同一姓どころか、同一姓名の人がいたりします…。
> 名前・事務所は同一名(なのに別人・別事務所)ということが多々あるので、
> 名前での分類は諦めています。ID・もしくは登録番号・事務所番号での管理が一番ですよね。

あっ、言い方まずかった。同一姓じゃなくて、同一姓名の方ね。
ちょっと大き目の企業ならありえる話なので、実際は社員番号とかで管理するのが普通だと思う。
そう言うのが書いてなかったので、ちょっと気のなっただけです。

> Access始めて二ヶ月の初心者なのに、頼りになるのはヘルプだけなので、今非常につまづいて
> しまっているんです。Excelの段階で整理してしまうってことでしょうか?

まあ、Access 側でやっても良いけど手軽さから言ったら Excel の方が早いかと。

やり方は、下に...
136129:02/12/01 21:41
続き...
(以下は、Excel2000 で確認した。)

【ここは重要】とりあえず、まず Excel ファイルのバックアップを取っておいて...

 [A]  [B]  [C]   [D]  [E]
◎山△子・100・事務所名・住所・事業目的

となっていたら、A列とB列の間に一行挿入する。

 [A]  [B]  [C]  [D]  [E]  [F]
◎山△子・  ・100・事務所名・住所・事業目的

となってるはず。ここで、メニューのツール(T) - マクロ (M) - Visual Basic Editor (V) をクリックする。
Visual Basic (for Application) が起動するので、メニューの 挿入(I) - 標準モジュール(M) をクリックする。
エディタで...

Function ShuBangou(S As String) As String
  Dim A() As String

  A = Split(S, "-", 2)
  ShuBangou = A(0)
End Function

を書き込む。(コピペしないでね。インデントを全角空白でやってるからエラーになるよ...、と思ったらちゃんと変換しやがる。さすが MS ...、と言うことでコピペでも良いようです。)

で、Excel に戻って、B1 のセルに =ShuBangou(C1) と書く。
あとは、B1 をデータの分だけ B2〜 にコピーすれば、B 列に C 列の主事務所番号 ("-" から前の部分) が入るよ。

(ちなみに、主事務所って何件ぐらい ? 20 件ぐらいしかないなら、手でやった方が早いかも...。)

同じようにして、事務所名も分離する。まずは、ここまで。
137123:02/12/01 22:23
>125さん
インポート→テーブルをコピー→コピーしたテーブルにフィールド追加
という手順でしょうか。ありがとうございます、試してみます。
ただ、データベースを使うのが、私以上にAccessを使えない上司たちなので、
インポートからテーブルの作成・分解までを、全てモジュール化してしまって
いるんですよね。(検索作業すらできないようなので)
なので、できるだけAccessに入ってからの作業は減らしたいんです。難しい…

>129さん
はい、やってみます! ありがとうございます。
ちなみに主事務所は300以上、従事務所もそれぞれに0〜10箇所以上と
数だけは多いので、手作業よりもVBAの方がはるかに早いはずです。
138125:02/12/01 23:04
>123
え?今後はAccessで処理するようにExcelからAccessへ移行するんじゃないの?
今後、Accessへの移行をすると言うのではないのだったら、なぜAccessを使うのかしら???
Accessで入力→出力やら検索までを出来るようなものを作るつもりなのかな?と思っていた
のですが、違ったようですね…
毎回Excelからのインポート作業が発生するなら、Excel側でAccessにインポートし易く加工
させておくのもアリかもしれませんね。

とにかく、がんばってくださいね〜
139名無しさん@そうだ選挙にいこう:02/12/01 23:12
サブフォームの内容をメインフォームに表示するにはどうすればいいん?
140名無しさん@そうだ選挙にいこう:02/12/02 05:57
移動ボタンの1つ1つのボタンってEnabledをFalseにできませんか?
141140:02/12/02 06:11
ああ、更新の許可とかで思ってることは実現できますた。
スレ汚しスマソです。
142名無しさん@そうだ選挙にいこう:02/12/02 15:11
>>139
メインとサブのテーブルをリレーションしろ
内容が異なるんだったら、object.sorcceで適当にしろ
143名無しさん@そうだ選挙にいこう:02/12/02 18:53
もしかしたら、基本的なことかもしれませんが、教えてください。

フォームでオプションボタンをつくるときに、よく、1,2,その他という
選択肢にしたいとき、1,2を選んだときに3のテキストボックスに
入力できないようにするのはどうしたら

                         いいのでしょう〜か
enable
145111:02/12/02 20:30
>>113

スマソ。まず謹んで訂正。
>me.TextBox1=Valueの書式が暗黙的に許されるケースもあるんだけど
>この式は厳密には、オブジェクトに値を代入しようとしているんだよ。

これ説明としてはあっているんだけど、AccessのVBAって変な仕様で、
オブジェクトにフォーカスがないと代表的なプロパティを変更できなかった(;゜Д゜)
代表的なプロパティってのはテキストボックスならTextだし、チェックボックスなら
Value、、、そんな感じ。

だからこの場合は、「あ え て」オブジェクトに値を代入する式にする必要がある。
そうしないと、おっしゃる通りフォーカスを取得していないオブジェクトに代入は
できない!とエラーが出てしまう・・・(納得いかない仕様だけどなー)
【誤】me.TextBox1.Text = Cstr(Nz(RS!Field,IfNull))
【正】me.TextBox1 = Cstr(Nz(RS!Field,IfNull))

と こ ろ で だ。。。

>>113 の書き込みを見て気付いたんだが、「レポートを開く為のフォーム」から
「開いたレポート」のテキストボックスを操作しようとしていないかな???
そいつは無理な相談だ。レポートが開いた段階でレポートの内容は確定(?)
してるからなぁ。

だからレポート内のテキストボックスをVBAで操作する時は、「そのレポートの」
「フォーマットイベント」にソースを書いてくれ。これで出来ると思うから、がんがれ!!!
性交を祈る〜
146111:02/12/02 20:31
>>123

インポート用のワークシートを工夫した方が簡単そうだね。
「100」→ 「100」と「0」に分かれ、「100−1」→ 「100」と「1」に
分かれたらインポートは簡単でしょう?VBAでも良いけれど、ここでは関数を使ってみる。
使うのはLEFT関数,MID関数,IF関数の3つだけ。

【1】LEFT(A1,3)
【2】MID(A1,5,99)

A1="100−1"の場合、【1】は"100"を返すし、【2】は"1"を返すからイイ感じ。
ただA1="100"の場合、【2】が空欄を返すのを"0"を返すようにしたい。

【3】 IF(MID(A1,5,99)="","0",MID(A1,5,99))

これならバッチリだ。【2】の答えが空欄なら"0"を、そうでなければ【2】の答えが
返って来る。

やっぱりAccessにインポートした後に必要な主キーはあらかじめ作っておいた方が便利。
【1】と【3】を今あるExcelシートに追加したら、後は何とでもなると思うよ。
(TДT;<ナンデオートナンバーガイキナリ小サイ番号ニ戻ルンダ!!ヒドイヨ、ネェサン!!


 全 角 英 数 見 づ ら い ぞ 氏 ね
149111:02/12/02 21:38
>>148
スマソ。半角英数だとドットが見にくいかと思ったぞ。
自分としても半角英数の方が入力が楽なので以後そうする罠。サンキュ!!!(チュッ
>>147
Accessで痛い目に遭うのはそういう所だよねい…。
Access97が1GB以上の、Access2Kが2GB以上のDBを扱えなくて鬱。
>>150
とっとと、SQL-Server にでも移行しろよ。
152123:02/12/03 01:28
ううっ、毎度123です…
129さんに教えていただいたようにexcelからデータの整理をして
インポートしたんですが、事業目的のテーブル作成でまたしても
けつまづきました。(他の2つは問題ないようです。多謝!)

内容の重複が激しいので、重複データを削除するために
テーブル作成クエリで元テーブル作成→テーブル構造をコピー
→追加クエリ作成→追加
とすると、

なぜか入力規則違反が……。(しかも全件)

事務所の所在地テーブルの方は同じような方法で作成して、重複している
データを上手く削除できているので、問題ないはずなんですけど。
ちなみに、事業目的テーブルは、ほとんどが数値データになっています。
これが原因なんでしょうか?
153123:02/12/03 01:32
>111さん
そういう方法もあるんですね。なるほど、ありがとうございます!
やっぱり最初の段階で事務所の番号を分けておいた方が正解ですね…。
もうちょっと戦ってみます。
154名無しさん@そうだ選挙にいこう:02/12/03 07:08
ADP(アクセスプロジェクト)で質問お願いします。
フォームに総レコード件数を表示させる目的で =Count(*) のテキストボックスを作りました。
MDBだったときは正常に表示されていましたが、ADPにしたらエラーになってしまいました。
どなたか原因のわかる方、お願いします。
MDB→ADP移行の過程を教えてくれ。今データはどこにあるんだ
156名無しさん@そうだ選挙にいこう:02/12/03 18:59
2000本体で97形式のデータmdbをリンクして使ってます。
dlookupの戻り値が半角スペースが入っていると
化けてしまったり、途中までしか取得できない場合が
あるんですが、こういう症状って直るのでしょうか。
>>154
ADPの接続先は当然SQLだよね?その=Count(*) のテキストボックスのWHERE条件で
日付を使ってない?AccessとSQLでは日付の表現が違うから要注意って事で。
>>156
リンクしているのは関係ないかな。私も2KでDlookup関数で同じ症状に陥った事がある。
どうもDlookup関数で文字列を引っ張ってくる時に問題がでる事があるみたいだから
面倒でもADOかDAOでデータを引っ張ってくるべし。
158名無しさん@そうだ選挙にいこう:02/12/03 21:11
ACCESS97を使っています。
Docmd.printout を使い、引数の[copies](部数)を変数にして、
印刷を実行させるときに任意の値を入力して印刷させることは可能ですか?
また、そのときにダイアログボックスなどを使って
値を入力したいのですが、どのようにしたらいいのですか。
inputboxをヘルプで。
160158:02/12/03 22:00
>159さん
できました。ありがとうございます
助かりました。
>>152
勘で回答。主キーが重複するとかなってない ?
162123:02/12/03 22:28
>161さん
主キー重複はないです。それは全部確認しました。
インデックスも、主キー以外のものには設定しないようにしてみたんですが…
やはりダメで。わけわからんです。
>>162
フィールドの多くは、数値型 ?
そこへ、文字を入れてるなんてことない ?
164125:02/12/03 23:44
>152
>入力規則違反…
ということは、データ型のマッチングが出来ていない可能性が大だと思いますが…
後は、追加する前に「追加クエリー」を「選択クエリー」にしてもデータは取得できていますか?
データ型を疑うようであれば、1フィールドずつ吐き出して行ってミスマッチやトラブルがない
かを調べるのも一つだと思います。例えば、文字数が多過ぎたとか…
私もよく追加クエリーとかで追加できないことがありますが、大抵初心者の私がデータ型を
ミスマッチしてることが原因です。他に、案外Nullなんかがあってデータが取得できていなかっ
たりもします。よく調べてみることをお勧めします。

どうしてもダメであれば、インポート後にフィールドをいじらずにインポートの状態でデータの
整理(削除での整理)をし、それからインデックスやフィールドのデータ型の整理をした方が良
いかもしれません。
データを追加するより、先ずは削除で整理した方が良いと思うのですが…。
追加だと上手くデータを取得できないと追加できませんからね…。

後は、インポートしたAとBのテーブルで、A→BあるいはB→Aに追加できないとかAとBの間で
選択クエリーが上手く行かない時には、インポート時のデータ型を疑ってみた方が良いかもし
れません。
初心者の私にできる助言って言ったら、そんなところでしょうか…
本当にダメなら…最悪、入力フォームを作ってテストがてら入力するとか…イヤダヨネ…
165157:02/12/04 07:00
MDB→ADP でCOUNT(*)がエラーになる件なのですが、
テーブルはSQLサーバーではなく、MSDEです。
日付の表現が異なるのは承知しています。
移行の過程は、
フォーム、レポート、テーブルをすべて、ADPにインポート、
VBAでJET使用箇所を全てADO使用に変更、
テーブルに主キーを設定、
フォームのレコードソースをクエリーからSQL文に変更、そのSQLをフォームのOPENイベントでレコードソースに設定、
フォームのレコードソースSQLの外部参照を削除、代わりにコンボボックスのcolumnを使うように変更、
以上の作業を行い、一応フォームを開いてデータの更新が出来るまでになりましたが、

=Count(*) だけ、エラーになってしまいます。
SQLサーバにおいては*じゃなくて%
でもこれ以外の原因があるような気もしなくもない
167名無しさん@そうだ選挙にいこう:02/12/04 09:13
レポートの金額欄の幅が半角数字だと詰まって見えて不細工な為、
 ・全角に変換する(レポート上で使う関数にStrconv関数は無いみたい?)
 ・1桁ごとに半角スペースを挿入する
このどちらかの関数って無いでしょうか。

Acc97です。おながいします。
168bloom:02/12/04 09:28
金額が全角の方がかなり不細工だと思うが。
>>165
コンボボックスを更新するとフォームのレコードソースも更新されるってことだよね?
フォームのレコードソースのSQLを貼ってみてくれ。
>>167
Strconv関数って使えるのでは?
使わないなら1文字ずつ変換するしかないな。
"全角数字"=Chr(Asc("半角数字")-32225)
これ使って1文字ずつ変換しる!(w
172167:02/12/04 12:10
すみません。。
激しく不細工になった為やめときます。(w
>>165
Count()はJetで定義されてるSQL集計関数だから
Adpでは使えないんでないかい?
count(*)使えるよ
175名無しさん@そうだ選挙にいこう:02/12/04 15:38
あいまいな質問ですいません。
ADPってなんですか?
先輩に調べておいてといわれたのですが、
HELPひいてもGOOGLEで検索してまったくわからないのです・・・
176173:02/12/04 16:13
>174
すまんcount()は使える。
けど俺もcount(*)は使えなかったんだがなんでじゃろ?
countとDCountを混同しちゃってるのかな
DCOUNT と DQNを混同しちゃってるのかな
179名無しさん@そうだ選挙にいこう:02/12/04 19:25
すみません、質問させてください。
「顧客データ」のデータベースを作ろうとしています。
電話番号のフィールドが、3つありまして(自宅、携帯、その他)
その3つから検索をかけたいのですが、
一度に3つのフィールドの検索をかける、というのはできますか?
できるようでしたら、どのようにクエリを作るのか、教えてほしいのですが・・・。

本を見ても何も見てもわからず、もう3日悩んでいます。
どうぞよろしくお願いいたします。m(__)m
>>177
Access2000以降のヘルプ引け。
>>179
WHERE句をORで繋ぐ。
WHERE tel1='03-****-****' OR tel2='03-****-****' OR tel3='03-****-****'
181179です。:02/12/04 21:45
>>180さん
 ありがとうございます。
 さっそくやってみたのですが、エラーが出てしまうのです。
 私が作ったテーブルの電話番号のフィールドは、「連絡先 1」「連絡先 2」「連絡先 3」と
 いう名前になっているのですが、
 書いていただいたWHERE tel1='03-****-****' OR tel2='03-****-****' OR tel3='03-****-****'
 を、クエリの画面の「抽出条件」に書き込んでみたのですが
 (tel1のところを「連絡先 1」と変更して)

 ・・・すみません、私、間違っているのでしょうか?
 せっかく教えていただいているのに、こんなありさまですみません。
 私のどこが違うのか、教えていただけませんでしょうか?
>>181
フィールド名にスペース入れるヤシはうんこですよ?
アンダーバーで代用しる。
[連絡先 1]と角カッコで囲んでもダメだっけなぁ?
>>182
> [連絡先 1]と角カッコで囲んで

で、できるよ。
184179です。:02/12/04 23:06
>>182さん 
  フィールド名に、スペース使っちゃうんこだったんですね。
  以後肝に銘じます。ありがとうございます。
>>183さん
  角かっこでくくったら、エラーはでなくなりました。
  ありがとうございます。

私、この式を入れれば、パラメータ、とか言うのも出てくるんだと思っていたのですが、
どうやら違うようですね。
すみません、ご面倒ばっかりでほんとにごめんなさい、
もう一つ教えてください。
私が(というか、私の会社が)やりたいのは

フォームのボタン「電話番号で検索」をぼちっと押すと、
「電話番号を入力してください」というパラメータが出てきて、
そこに「0**********」という番号を入れると、
3つのフィールドから検索されて、「顧客データ」が出てくるっていうものなんです。

このパラメータを出してから、3つのフィールドに検索ってできますか?

もうわからなくてベソかき状態なので、
よく意味が伝わらなかったらごめんなさいです。m(_)m
>>184
簡単にやるなら、パラメータクエリでヘルプ引くべし。

とりあえず...

WHERE [連絡先 1] = [連絡先を入れてね:] OR [連絡先 2] = [連絡先を入れてね:] OR [連絡先 3] = [連絡先を入れてね:]

でできるみたい。
というか、フォームにテキストボクース1個、コマンドボタン1個置いて、
テキストボクースに入力されたTEL番を変数に入れてWHERE句で使う、それで良いんじゃないの?
>>184は多分、外注した方が良いと思う。
それかExcelあたりでCtrl+Fしてなさい。
187179です。:02/12/04 23:58
>>185さん
 ありがとうございます。どうにかパラメータの「連絡先を入れてね」が出て、
 検索ができるようになりました。
 が、連絡先2と3のフィールドにある電話番号を入れると、データが出てくるのですが、
 連絡先1にある電話番号を入れても、データがない状態で出てきます。
 3つとも同じに設定してあるのですが・・・??なぜ??

 それでも2つのフィールドから検索できるようになったので、
 ものすごいうれしいです!!ありがとうございました。感謝します。

 パラメータクエリのヘルプ読みました。半分くらいわかったような・・・わからないような・・・。
 この仕事が一段落したら、ヘルプしっかり読みます。

>>186さん
 ほんとに、外注してほしいです(泣)
 エクセルだって半人前です。
 186さんの書かれている意味など、到底私にわかるはずもありません。とほほ。
 

皆さん、深夜につきあってくれてありがとうございます。
周りには誰もアクセスを使える人がいないので、精神的にもかなり詰まってましたが
少し楽になってきました。
自由にやれるという意味では恵まれた環境だね
189165:02/12/05 00:38
>>166
SQL文で Select Count(*) From DQN なんてのが有るだろ!

ところで、どうやったら件数表示できまふか?

>>187
がむばってくらはい!
周りのプログラマーでもアクセス出来る人少ないです。みんな、アクセスをバカにしていて、全然習熟していません。
VBと比べたら、全然楽なのにな〜、
>189
だから、DCOUNT。
191名無しさん@そうだ選挙にいこう:02/12/05 00:58
すいません、質問させてください。

・テーブルがあって、フィールドは次の4つです
【オートナンバー】【グループ(テキスト型)】【名前】【チェック(Y/N型)】

次にフォームを作って、そこに上のテーブルを基に作ったサブフォーム
を埋め込みました。ここで質問なんですが、このサブフォームに
【グループ】が一致して、尚かつ【チェック】がついてるレコード
だけを表示するにはどうしたらいいでしょうか。
今の所、フォームを開いた時に登録されてるレコードは表示しないようにして、テキストボックスにグループ名を入力すると、【グループ】が一致するレコードだけ表示する事はできたのですが、
『尚かつ【チェック】がついてる』レコードだけ表示する事が
できません。親切な方おしえてください。お願いします。
192191:02/12/05 01:23
続きですが、今の所

Me!サブフォーム.Form.Filter = " グループ= '" = " Me!テキスト = '"
Me!サブフォーム.Form.Filter = True

てな感じで【グループ】が一致するレコードは表示できるのですが・・・
193191:02/12/05 01:25
間違った。

Me!サブフォーム.Form.Filter = " グループ= '" & " Me!テキスト = '"
Me!サブフォーム.Form.Filter = True
194奮闘中:02/12/05 04:44
バージョン:アクセス97
webの画像を取り込みたいのですが、Webブラウザコントロールを
使おうとしていますが
メソッドにNavigateが出てこないのですが、
97には、Navigateがないのでしょうか?

Private Sub txtURL_AfterUpdate()

WebBrowser0.Navigate Me!txtURL

End Sub
で、txtURLに入れたURLの画像をWebブラウザコントロールを
使用して表示させたいのですが、、、



195名無しさん@そうだ選挙にいこう:02/12/05 06:55
>>193
サブフォームのレコードソースをクエリーにして、Where 句 で チェック = True とすればよいと思います。
>>194
イメージコントロールでハイパーリンクの設定できなかったっけ?
画像をリンク取り込みするくらいだったらそれで良いのでは?
197名無しさん@そうだ選挙にいこう:02/12/05 10:29
外部スクリプトファイルを実行することは出来ますでしょうか?

Access2002
198へなちょこ:02/12/05 11:22
厨房です。すいません。
プロシージャを作っていて、If Else,Do Loop,While Wend など色々ありますが
どれをどう使ったらいいかわかりません。どなたか教えていただけませんか?

レコードを表示するのは
-------------------------------
Me.NextRecord = True
Me![商品名].Visible = True
Me![商品コード].Visible = True
Me![単価].Visible = True
Me![在庫].Visible = True
-------------------------------
罫線・ラベルだけを表示するのは
-------------------------------
Me.NextRecord = False
Me![商品名].Visible = True
Me![商品コード].Visible = True
Me![単価].Visible = True
Me![在庫].Visible = True
------------------------------
ですよね。(違うのかな?)

レコード数を A 、罫線・ラベルだけを表示する回数を B すると、レコードがA個の時は
A個のレコードを表示した後、空の罫線・ラベルをB回表示して終了しなさいという風にしたいです。
 A < 6 の時は B = 5 - A 
 5 < A <16 の時は B = 15 - A
 15 < A< 26 の時は B = 25 - A
とするには詳細の部分をどうしたら良いでしょうか?

http://support.microsoft.com/default.aspx?scid=kb;ja;JP404909
↑これをもとにやっています。
>>197
例えばどんなスクリプト?
コマンドプロンプトから実行できるものなら「Shell」をヘルプで探せばいけるかも。

>>198
何を書いておられるのか分かりませんが、
リンク先のそのまま使えば問題ないのではないですか?
ループやIf問い合わせが分からないならヘルプを読むと良いと思います。
ちなみにループはForを使っていれば安定かと。
200へなちょこ:02/12/05 12:35
>>199
メインレポートにレコードをサブレポートとして呼び出してレコードが少ない時の
空白になる部分を空の罫線・ラベルで埋めたいのですが、リンク先のやつを
そのまま使うと、サブレポートがメインレポートに収まりきらないため、次の
ページの先頭から始まってしまうのです。
だから、まず、レコードを表示したあとで、レコードの数によって空の罫線・ラベル
を収まりきるように変えるようにしたらいいのではと思ったのですが、
なにぶんスキルがないので、困っています。わかりますか?
201名無しさん@そうだ選挙にいこう:02/12/05 12:36
>>197
ほかのアクセスのVBAを実行させたい場合は、参照設定でそのMDBを参照する設定を行うと、
ほかのMDBのVBA(プロシージャ)が使えます。
>>200

> なにぶんスキルがないので、困っています。わかりますか?

スキルがないなら、スキルを身につける努力をするか、それとも、自分でやるのは
あきらめてスキルのある別の人に依頼すべき。

見ず知らずの赤の他人に無償の尻拭いを求めるのはムシがよ過ぎるのでは?
203197:02/12/05 14:25
>>199.201
レスありがとうございます。
スクリプトはvbsなのです。

A.vbsだとしたら

Shell ("cscript.exe ""D:\A.vbs")

でいいのでしょうか?
>>200
手間をかけて空の罫線やラベルを出すメリットが感じられないねえ。。
205奮闘中:02/12/05 15:30
>>196
>ハイパーリンクの設定できなかったっけ?
ハイパーリンクだと そこをクリックしないと画像表示できないもんで
一度画像を取り込む事も考えたのですが、日々更新される画像で
8000枚近くあるもんで、直接読むほうが、使う側から
すると楽かと思いまして


206へなちょこ:02/12/05 15:40
>>202 もう2ヶ月以上暇な時にあれこれ調べてるのですが、解らないんですよ。
スキルのある知り合いがいれば良いのですが、いないし、あとこの部分だけで完成する
からと思って書き込みしてみたんですけど。
>>204 提出するのに書式が決められているもので・・・

ここの住人ならチャチャッと教えてくれると思ったのに。
>>206
(´,_ゝ`)
208名無しさん@そうだ選挙にいこう:02/12/05 17:44
>206 へなちょこさん
レポートの罫線(行と列数)は決まっているのですか?
決まっているようならば、Accessから印刷時のみExcelを起動してExcelで印刷させる方法もあります。
この場合、行と列の数が決まっているならばExcel側で罫線やフォントなどの書式設定をしてしまい、
数値のみ送って代入すれば済みます。

>ここの住人ならチャチャッと
それはいくら何でも無理だと思いますよ…みんな大なり小なり苦労してるでしょうし…
ループ:For…Next、Do…Loopなど
条件分岐:If…Then、Select Case
値を得る場合(関数化?):Function
別の記述での実行:Sub
FunctionとSubにはPrivateとPublicがあります。変数にもDim…、Public…とあります。
この辺を抑えれば、一通りのことが何とかできると思いますが…
頑張って、調べていろいろテストプロシージャ作って実験してみてください。
209名無しさん@そうだ選挙にいこう:02/12/05 18:03
AテーブルにDateというフィールドがあり、また、フォーム上に期間を入力する
テキストボックス「txtDate_S」「txtDate_E」(02/12/01〜02/12/31)があります。
DAOでこのDateフィールドのテキストボックスで指定した期間のデータを抽出した
いのですが Between ... And ...を使えばいいのでしょうか?
以下のように書いたのですが変ですか?

Dim db As Database
Dim ds As DAO.Recordset
Dim Sdate As Date
Dim Edate As Date

Set db = CurrentDb
Set ds = db.OpenRecordset("Aテーブル", dbOpenDynaset)
Sdate = Me.txtDate_S
Edate = Me.txtDate_E
ds.FindFirst "Date = Between #" & Sdate & "# And #" & Edate & "#"
>209
それだと1件ずつ拾っていく事になるけど、いいの?
変ですか?じゃなしに、欲しい結果と出力結果が違うならそこで初めて書けよ
>>209
「変ですか」というのはどちらかというと、価値観やセンスの是非を問う発問。

例) 「このネクタイ、変?」

読み手としては、デジタルな答えを求めているのではないのかな?と受け取れる。

ちなみに、Dateは予約語(関数名とカブる)
別名にするが吉。
家庭の事情等で改称できない場合は、[ ]で括ると吉。
(予約語と同一名でも、[ ]で括ればユーザー定義の識別子として扱われる仕様)
213名無しさん@そうだ選挙にいこう:02/12/05 18:45
>>210
スミマセン
この後に

If ds.NoMatch = True Then
 MsgBox "ないよ"
Else
MsgBox "あるよ"
EndIf

と続きます。

>>211
上に書いたメッセージが出る前にエラーになってしまいます。

Between ... And ...は使わないで
他の方法がありますでしょうか?

214名無しさん@そうだ選挙にいこう:02/12/05 18:48
質問です。
ACCESSでフォームの画面からクエリをかけて
データを抽出し表示したいのですが、
テキストの内容が完全一致でないと抽出できません。
*のようなワールドカードを使いたいのですが
うまくいきません、どなたか教えていただきたいです。

Private Sub テキスト_AfterUpdate()

Me.Requery

End Sub

215210:02/12/05 18:52
>213
ds.FindFirst "Date = Between #" & Sdate & "# And #" & Edate & "#"

この "=" はいらないんじゃなかったっけ?

あと212さんが言うように、予約語が気になる。

それから、検索するだけなら、dbOpenDynasetにしなくてもいいのでは?
最後に、終わったら、Set したものは Nothing した方がよいです。
216名無しさん@そうだ選挙にいこう:02/12/05 18:54
>>213
>Between ... And ...は使わないで
>他の方法がありますでしょうか?

ある
217210:02/12/05 18:55
>214
その質問と、プロシージャの関係が良くわからないんですが。。。
完全一致で検索できるなら = じゃなくて、LIKE演算子を使えばできるはず。
218名無しさん@そうだ選挙にいこう:02/12/05 19:00
>214さん、ありがとうございます。
http://www.mahoutsukaino.com/ac/ac2002/ac2002/sassoku/001.htm
見たいな事やってるんですけど、
うまく質問できなくてすいません。
LIKE演算子とは?
>>209=213
Find系の条件式は Select文(SQL)の Where句以降の書き方と一緒ですよん。

あとですね、日付/時刻型のデータ型を対象とするときは米国式日付(月-日-年)
にフォーマット変換してやらないとエラーになるってヘルプに記載されてません
でしたか?
>>218
他人に迷惑掛けまくって、手取り足取り教わらないとできないものなら、
作らない方がよいのでは?

掛け算九九がやっとな人には、微積は無理だし、よちよち歩きの子供には
フルマラソンは無理。

能力相応でないことをやろうとしても幸せになれないと思う。
221209.213:02/12/05 19:12
>>215=210さん
レスありがとうございます。

「dbOpenDynaset」のところは本を見よう見まねで書いたので…

212さん言われるところのDateは[Date]にしてみましたがダメでした。

「=」を抜くと「ds.NoMatch 」のところに「True」が返ってますが実際のAテーブルには
該当するデータがあるのでやはりダメでした。

ほかに
ds.FindFirst "Date >= " & Sdate & " And Date <= " & Edate
こうも書いてみたのですが相変わらず…

書いた最後には
ds.Close
db.Close
を書き足しました。

>>219さん
レスありがとうございます。

ヘルプを再度読み直ししてみます。

みなさんスミマセン退社しなければならなくなったので(鍵持ってない…)
帰宅後拝見させていただきます。
222210:02/12/05 19:17
>218
クエリのデザインビューで、抽出したいフィールドの条件を書く所に
 Like "*あ*"
とかするってこと?

Like演算子はヘルプで調べてください。
223210:02/12/05 19:18
>221
=を取ったら、219さんがおっしゃってることも試してみてください。
あと、
Set ds = Nothing
Set db = Nothing
も追加しておいてね。
224名無しさん@そうだ選挙にいこう:02/12/05 19:21
>222
それを言いたかったのです。
やり方有りますか?
>>220は少しキツい言い方かもしれないが、能力以上の背伸びはムリなのは
間違いない。
現在の力量で作成可能なものをきっちり作り、その反省を踏まえて、その次
はもう少し手の込んだものを作り・・・と繰り返して行けば、無理なくステ
ップアップできるし、教えてクンにならずに済む。

例として適切かどうかわからないが、ピアノなら、いきなり、ショパンのエ
チュードにチャレンジするより簡単な練習曲に取り組んだ方が上達には効果
的なのとおなじこと。
226210:02/12/05 19:30
>224
やり方はいっぱいありますが・・・。
VBAは書けないでしょうから、パラメータクエリを使ってみては?
パラメータクエリについては、ヘルプやGoogleとかで調べて見てください。
簡単です。
>>225
スキルアップには他人が書いた良質なコードを読むのが一番だが、Accessでは意外に少ないため、
研究材料の入手が困難な罠・・・。

本を読んで勉強するのもひとつの手段だが、「なんちゃってライター」さんが書いたおかしな
内容を信じると痛いめを見る罠・・・。
(1)開発経験があり、(2)RDBの本質(正規化など)を理解しており、(3)プログラミングのスキル
が確かな人がわかりやすく書いた本なら読んで損はないと思う。
228214:02/12/05 19:52
イヤー大漁大漁
おまえら w
>>220 >>225 >>227


(´,_ゝ`)
230179=187です。:02/12/05 19:56
昨夜はみなさん、ありがとうございました。
つっかかっていた、「連絡先1」からの結果が返ってこないっていうところ、
今日、めでたく解決し、3つのフィールドから検索できるようになりました!

まだまだ先は長いのですが、一つクリアーできた(みなさんのお力を借りてですが)ことで
元気が出てきました。
またお世話になると思いますが、どうぞよろしくお願いいたします。m(__)m
せめてもう少しだけ、アクセス使えるようになりたい!がんばります。

>>188さん >>189さん
やさしいお言葉ありがとうございました。
リストラされないうちに完成させたいと思います。
なんか変だなぁ〜と思ったら・・・>>218って>>214に呼応してるのね。一人芝居?
究極の目的はなんなのだ。
あるかないかが知りたいならSELECT COUNT...でいいんじゃないのか。
本当に一件ずつ見ていかないといけないのか。
RDBらしい使い方をしたほうがよくはないか。
はっはっは。つまり何をしたいのかがさっぱりわかりませんが、
お困りであることだけはわかりました。
もう少し噛み砕いていただくと理解・助言できるかもしれません。
234名無しさん@そうだ選挙にいこう:02/12/06 00:13
>>200
やった事ありますが、レポートを開く前に、クエリー等で空白行文の空レコードをそのソーステーブルに追加してあげるとよいです。
>234
な。普通そうだよな。VBAでグリグリやるなんて、エレガントじゃない
236209.213:02/12/06 08:52
Dim db As Database
Dim ds As DAO.Recordset
Dim Sdate As Date
Dim Edate As Date

Set db = CurrentDb
Set ds = db.OpenRecordset("T_Entrance_fee", dbOpenDynaset)
Sdate = Format(Me.txtDate_S,"mm/dd/yy")
Edate = Format(Me.txtDate_E,"mm/dd/yy")

ds.FindFirst "[Date] Between #" & Sdate & "# And #" & Edate & "# "

If ds.NoMatch = True Then
  MsgBox "ないよ"
Else
MsgBox "あるよ"
EndIf

Set ds = Nothing
Set db = Nothing

としてみました。

Sdateに02/12/01(実際は12/01/02 mm/dd/yy)をEdateに02/12/31(実際は12/01/02 mm/dd/yy)と
入力しやってみましたところ

Sdate = Format(Me.txtDate_S,"mm/dd/yy")  こちらは12/01/02に書き変わっているのですが

Edate = Format(Me.txtDate_E,"mm/dd/yy")  こっちは02/12/31のままです。

書き忘れましたがAccessは97です。

(説明は略)

Dim Sdate As String
Dim Edate As String

Sdate = Format$(CDate(Me.txtDate_S.Value),"yyyy/mm/dd")
Edate = Format$(CDate(Me.txtDate_E.Value),"yyyy/mm/dd")
238209.213:02/12/06 11:08
>>237
感涙…ありがとうございます

もう一度勉強し直します…
239へなちょこ:02/12/06 11:11
>>234,235さん、ありがとうございます。
前に空のテーブルを作っては?と考えた事がありましたが、
結局挫折してしまいました。
もう少し具体的に教えて頂けませんか?

ACCESS総合相談所のわりには相談してる人に批判的な人がいますね。
ネットで調べて解ったら、ココに書き込みませんよ私
荒しですかね。(´,_ゝ`)
>>239
ヴァカのくせにずいぶんエラそうな態度ですね。w
教えてクンの上に開き直りですか。

> ネットで調べて解ったら、ココに書き込みませんよ私

調べても理解できないのはお前の能力が (略
>>238
210さんの>>215の書き込みで>>221のように”dbOpenDynaset”を指定するべきか
迷っていたようですが、結論から先に言うと明示的に指定しないといけません。
FindFirstをテーブルタイプのレコードセットに対して使用するとエラーが発生
します。
242名無しさん@そうだ選挙にいこう:02/12/06 11:28
タブコントロールって背景色変更できるんでしょうか?
>>239

ネタに(略)
244へなちょこ:02/12/06 11:58
>>240
(´,_ゝ`) ふ〜ん
>>240
ヴァカは逝ってよし!
246ネタにマジレス?:02/12/06 12:04
>>239
まぁ、ここは相談所ですからねぇ〜。どうすれば実現できるか"ヒント"は
提供するけど、わざわざ他人の為に時間を割いてまで解を見つけるような
面倒なことはしたくないってのが本音でしょう。

"一を聞いて十を知る"ような人でないとコミュニティでうまくやっていく
のは難しいと思いますが。他のサイトでも同じじゃないですか?
247へなちょこ:02/12/06 12:29
>>246
ごもっとも、おっしゃるとーりです。
ですが、もう少しだけ説明があれば、あれこれ試せるのですよ。
すんません。
248へなちょこ:02/12/06 12:30
>>240 >>246

困り果てて藁をもすがるような気持ちで質問しているのに、冷たい人たち
ですね。スキルの低い人には手を差し伸べて助けてあげるのが大人として
の当然の気遣いでしょ?
あなたたちには社会人としての最低限のマナーもないんですか。
煽りだけの無責任な発言は不愉快ですし、迷惑です。やめてください!
(どうせ私の質問に答えるスキルもないんでしょ?)
>>242
無理。
250へなちょこ:02/12/06 12:31
>>247 は私ではありません。
なりすましはやめてください!
>>250
どうでも良い。消えろよ。
252209.213:02/12/06 12:38
>>241
一度「dbOpentable」にしてみましたが>>241さんの言われるようにエラーになりました。
検索が(インデックスを使用した検索)Seekのみだと本に書いてありました。


253へなちょこ:02/12/06 12:42
>>251

>>248 >>250 は私ではないんですが??
254名無しさん@そうだ選挙にいこう:02/12/06 12:44
>>239
空レコードを追加するわけですが、
1.空レコード 時間です。
255ネタにマジレス?:02/12/06 12:51
>>248
残念ながらネット空間においてもリアルワールドにおいても
 「泳げない奴は溺れてしまえ」
ってのが現実的な反応ではないでしょうか?
自分で這い上がる力のない者は取り残されていくんですよ。
256ネタにマジレス?:02/12/06 12:55
このスレの住人のスタンスは映画マトリックスのモーフィアスに近いでしょう。

”入り口までは案内する。その先どうするか決めるのはおまえだ。”
257名無しさん@そうだ選挙にいこう:02/12/06 12:55
HTMLファイルの処理について

InternetからローカルPCに、西ヨーロッパの文字コードのHTMLファイル
を保存しています。(IEでUTFへの変換は可能です)

新聞のスクラップが目的です。
そのHTMLファイルをAccessで管理しようとしています。

そこで2つ質問があります。

1 IEで新たなウィンドウを起動することなく、Accessのプロ
グラム内でHTMLファイルを閲覧できるか?

2 Accessから、ローカルに保存してある西欧文字コードやユニ
コードのHTMLファイルの内部を検索できるのか?


アドバイスお願いします。
ここの雰囲気が嫌ならここで訊くなということだね、兄さん。
素晴らしい!
食事の用意が出来たみたいだよ、兄さん。
素晴らしい!
259ま、そういうことだ:02/12/06 13:17
>>258
Accessユーザの集まる場所はここだけじゃないから自分が気に入った
ところに参加すればいいでしょ。と言うかさ、ネタと罵り合いの入り
混じった 2ch でマジレス期待するほうがいかがなものかと。
>>209

Dim db As Database
Dim ds As DAO.Recordset
Dim mySQL As String

Set db = CurrentDb

mySQL = "SELECT * FROM Aテーブル WHERE Date Between #" _
& Format(Me.txtDate_S, "yyyy/mm/dd") _
& "# And #" & Format(Me.txtDate_E, "yyyy/mm/dd") _
& "#"

Set ds = db.OpenRecordset(mySQL, dbOpenForwardOnly, dbReadOnly)
With ds
If .EOF And .BOF Then
MsgBox "ないよ"
Else
MsgBox "あるよ"
End If
.Close
End With

db.Close

Set ds = Nothing
Set db = Nothing
>239 前に空のテーブルを作っては?
とりあえず、ネタかも知れないがマジレスしてみる…
空白レコードを打ち込みたいなら、例えば
1)クエリーで必要データを一時テーブルに吐き出す
2)1枚の紙に出力するデータ数が決まっている場合、最後の1枚で足りないデータ数を
 プロシージャ(VBA)で書き込むようにする
3)出来上がった一時テーブルのデータを出力する

この場合、2)の分で必要なスキルは
1)プロシージャ(VBA)内でレコードセットを開く
2)Do…Loopなどで必要数をテーブルに書き込む
この2点ですかね…
ループやレコードセットについては、とりあえず自分にとって分かり易い本を1冊
購入して、いろいろ実験してみることをお勧めします。
ヒントとしては
1)1枚のデータ数が15の場合、結果のレコード数が40ならばExcelのMOD関数みたい
 なもので不足データXを出す(使える関数があるかは不明)
2)一時テーブルをレコードセットで開き、.addnewと.updateで不足データ分を埋め
 て行く(このときループが必要になる)
くらいかな?
基本的に、人の作ったものや本やHPに書いてあることを元に自分でいろいろ創意工夫
する柔軟さがないと作れませんから、頑張って工夫してください。
…人のために無駄な時間を費やしたな…
262 ◆/koT5II8pU :02/12/06 13:31
248,250,253は成りすましですね。
成りすまされ初体験でした。おもろい。

なんか、荒れ気味なのでしばらくレスしません。
263260:02/12/06 13:32
説明は省略させてくれ。答えを書いた方が早い。
(謙虚なヤシには福があるって事だな)
248,250,253は成りすましですね。
成りすまされ初体験でした。おもろい。

>>261さん
試しながら試行錯誤してみます。
ありがとうございました。

なんか、荒れ気味なのでしばらくレスしません。
すんませんでした。
ココハヒドイイソターネシトデスネ
266260:02/12/06 14:03
>>へなちょこ
煽りに乗るな!逆切れするな!捨て台詞吐くな!
これ以上荒れるのも本意ではないから教えてやる。
しかも無料、無報酬でだ。

(1)まず印刷用のワークテーブルを作れ。
元テーブル: Field1, Field2, Field3,…
ワークテーブル: Field0, Field1, Field2, Field3, …
※ワークにはField0をオートナンバー型で追加しておけ。

(2)次に3つクエリを作れ。
1.ワークを空にする削除クエリ
2.元テーブルを全てワークに追加するクエリ
3.ダミーデータを1件ワークに追加するクエリ

(3)後はコードでも書いとけ。
Const ページ行数 = 20
Dim c As Integer
Dim w As Integer
Dim i As Integer

c = DCount("*", "元テーブル")
w = c - Int(c / ページ行数) * ページ行数

DoCmd.OpenQuery "ワーク全部削除", acViewNormal
DoCmd.OpenQuery "元テーブル追加", acViewNormal

For i = 1 To w
DoCmd.OpenQuery "ダミー1件追加", acViewNormal
Next i

(4)後はワークからField0順に印刷しろ!
267209.213:02/12/06 14:17
>>263.260さん
レスありがとうございます。
一応は答えが出ましたが、別の方法を教示していただき
参考にさせていただきます。

この場合にCloseは「db」のみをしているのですが、本では
「ds」のほうもCloseさせています(本がすべてではないのだけど…)

「db」のみのCloseで問題ないのでしょうか?
>>267
開いた(Open)ものは閉じる(Close)のがマナー。
開けっ放しは行儀がよくない。
Closeメソッドを実行すると、クラスの内部ではTerminateイベントが
発生する(はず)

ただし、少々作法に外れた行儀の悪いプログラムでも問題発生に直結
するとは限らない。
それが、VBのよいところでもあり、悪いところでもあり・・・。

269209.213:02/12/06 14:22
ご免なさい。よくよく見たら

With ds
If .EOF And .BOF Then
MsgBox "ないよ"
Else
MsgBox "あるよ"
End If
.Close    ←ここで
End With

Closeさせているんですね。
270260:02/12/06 14:26
>>267
お!できたの?やり〜!!
質問の件だけれど、With 〜 End with ブロックに囲まれている中で
「ds」もCloseしてるよ。Withブロックを使うと若干実行速度がUPするらしい。

あと、「Set オブジェクト変数=Nothing」をするとAccessの仕様では暗黙的に
クローズされるらしい。本来の目的は=Nothingでオブジェクトを破棄しないと
PCのリソースが解放されないからなんだけどね。

これからもがんがってくれ!(w さて飯食ってくるわ。
271260:02/12/06 14:28
>>268,269
レスが早いぞ、おまいたち!(w
お ま い ら 最 高 で す !
272209.213:02/12/06 14:29
>>268
「開いたら閉じる」ということは分かります。

>クラスの内部ではTerminateイベントが…
うんねんになると頭がパニです。

勉強しろってことですね…(ガンガリます
273209.213:02/12/06 14:38
>>271
いゃ〜親身になって考えてもらったり、助言してもらったり
しているのですから、質問したときはレスを頻繁に見てます(ポリポリ

質問してもレスが付かないときは自分のした質問がショーもないのか
的を得てないのか、再度思考するようにしてます。

今回は本を見たりWebで検索したりしても分からなかったので、ここで
質問させてもらいました。

助言いただいたみなさんありがとうございました。
>>270

> あと、「Set オブジェクト変数=Nothing」をするとAccessの仕様では暗黙的に
> クローズされるらしい。

「Accessの仕様」ではなく、「COMの仕様」のような気もするが?

インプロセスサーバの場合は、Nothing だけでも問題ないのかもしれないが、
アウトプロセスサーバ(Excel等のActiveX EXE)のインスタンスは、終了処理
を記述しないと放置されるハズ。(近い将来?、Officeが.NET化されたとしても、
GCが面倒見てくれるということも、たぶんないと思う)
275へなちょこ:02/12/06 14:49
>>274



(´,_ゝ`)
276260:02/12/06 15:47
>>268 >>274
ぬう… ぬしら達人と見た!
行儀良く… アウトプロセスに注意…
今週の教訓として朝晩と唱和することにする。サンキュ!!!

それにしても今日の昼飯、牡蠣フライは美味かった〜
Nothingを行うとセッションをクローズします、と仕様に書いてあるが?
セッション?
279名無しさん@そうだ選挙にいこう:02/12/06 22:42
お知らせです。

1.解らなくて質問する人
2.解っていて答えられる人

は、ここを利用しましょう!

また、
1.解らないくせにえらそうに説教する厨房
2.解らないくせにえらそうに説教するヴァカ
3.解らないくせにえらそうに説教するゴミ

は、もう少し勉強してから書き込みましょう!

また、創価学会の人は書き込み禁止です。


以上
280名無しさん@そうだ選挙にいこう:02/12/06 23:08
終了
>>279
それをageで書くなよ。
ただの荒らしじゃないか。

マターリしようよ。
>>281
279を書いているのは劣等感の塊のようだから、ここに憂さ晴らしの書き込みを
しなければ気がすまないんでしょう。そっとしといてやりましょう。

ま、マトモな文章で質問を投げているぶんには叩かれないんですけどね。
283260:02/12/07 10:22
>>277
うむ。私もそのNothingに関する記載は何処かで見た記憶があるよ。
ただ、>>268が言うCloseの必要性も肝に命じておいた方が良いかな?とは
思ってる。>>274の言うようなリソース漏れが起こらないとも限らないしねえ。
>>274の内容については私自身は再現テストしたわけではないので…)

そうそう少し前のログで97は1GBまで、2Kは2GBまでしか扱えないと
あったのでループ作って試してみた。97では「データベースが大き過ぎる」と
エラーが出た。でも2Kでは「引数が無効です」という不適切なエラーが
出たので面白かった。さすがM$って感じ(w
まぁ、nothingくらい四の五の言わずにやっとけ。
>>274氏が言いたいのは、「インプロセスサーバとアウトプロセスサーバとを同列に扱うな」
ということだけだろ?
286名無しさん@そうだ選挙にいこう:02/12/08 14:04
Nothing って
Cだと、

FILE *fp



fp = fopen ( name, mode ); /* ファイルポインターをfpに代入 */



fp = NULL; /* ファイルポインターを初期化 普通いちいちやらない*/

最後の行が、vbの set fp = Nothing と等価だと思うのです。
VBでは他の言語と違って、使われなくなったオブジェクトは
Nothingしなくても解放されるよ。
やばいのはファイル操作のOpenしっぱなしだけ。
>>286
VB で Set fp = Nothing とすると、fp が指していたオブジェクトの参照カウントが一つ減る。
で、そのオブジェクトを参照しているものがなくなったら自動的にオブジェクトの解放を行う。
C は単なる代入文。fp が NULL になるだけで、それ以外のことは何も起こらない。
だから fp が指しているオブジェクトが有効なものであっても、自動解放なんかせずにリソースリークとなってしまう。

>>287
> VBでは他の言語と違って、使われなくなったオブジェクトは
> Nothingしなくても解放されるよ。

他の言語が何指してるかわからんけど、使われなくなったオブジェクトの自動開放をサポートした言語はいくらでもあるぞ。
と言うか、GC をサポートした言語ならたいていそうなってる。

> やばいのはファイル操作のOpenしっぱなしだけ。

心配するな、ヴァカでも使えるように VB 側でちゃんとクローズするよ。
例外は、デバック時に STOP/ブレーク した時だけ。
289Tommy:02/12/08 19:32
職場用に薬品管理システムをAccess2000で作成しています。
PCのOSはWin98です。データベース名は「薬品管理システム.mdb」としました。

その後[ツール]-[データベースユーティリティー]-[データベース分割ツール]で
テーブルデータのみを「薬品管理システムテーブル.mdb」という名前の
データベースに分け、「薬品管理システム.mdb」とリンクしました。

「薬品管理システム.mdb」を起動したときに開くメインメニューフォーム上に
データバックアップボタンを作ったのですが、そのボタンを押すことにより
リンクされた「薬品管理システムテーブル.mdb」上のテーブルを他のドライブ
にバックアップしたいのですが、どうしたら良いのでしょうか。

TransferDatabaseやCopyObjectを試したのですが、リンクが転送されてしまいます。
わかる方、教えて頂けないでしょうか。宜しくお願い致します。
>>274

> インプロセスサーバの場合は、Nothing だけでも問題ないのかもしれないが、
> アウトプロセスサーバ(Excel等のActiveX EXE)のインスタンスは、終了処理
> を記述しないと放置されるハズ。

アウトプロセスで生成されたインスタンスもNothingすれば、破棄される。
確かめもせず、思い込みだけでウソを書くのは如何なものかと。
291名無しさん@そうだ選挙にいこう:02/12/08 20:47
すいません質問なんですが、
FilterOn プロパティで抽出条件を〜かつ〜に
するにはどうしたらいいですか?
>>291

> FilterOn プロパティで抽出条件を〜かつ〜に
> するにはどうしたらいいですか?

FilterOn プロパティには、True/False の2値しかありませんが?

Filter プロパティなら、SQLのWHERE句とおなじ。
つーか、ヘルプに書いてあるんだけど、ちゃんと読んだ?
>>292
はんッ!ヘルプなんか読んでたらこんなところで質問するかよ。
ちったぁ考えろ。
294名無しさん@そうだ選挙にいこう:02/12/08 21:42
フォームのテキストボックス『検索』の値と一致する
住所で、かつチェックフィールド(YES/NO型)が
Trueのレコードを表示するようにしたいのですが、

Forms!(フォーム名).Filter = "住所 Like'*" & Me!検索 & "*'" _
              And "チェック= true"

Forms!(フォーム名).FilterOn = True

と And を使ったのですが、できません。
どうしたらいいでしょう?
>>294
なんでANDは"〜"の外なんだよ。
あとLIKEの前後に半角スペースがいる。
296294:02/12/08 22:07
Forms!(フォーム名).Filter = "住所 Like '*" & Me!検索 & "*'" _
              "And チェック= true"

Forms!(フォーム名).FilterOn = True

これでいいんでしょうか?
>>296
お前アホか?
「これでいいんでしょうか?」って何だよ。
なんでやってみないんだよ、ウンコめ。
298名無しさん@そうだ選挙にいこう:02/12/08 22:30
>>297
確かに...
>>289
単純にMDBのファイルをどっかにコピーする事考えればよいのでは?
299294:02/12/08 23:02
すいません。家にパソコンがないので・・・
あ?
301名無しさん@そうだ選挙にいこう:02/12/09 01:24
>>299
脳内パソコンだぁ〜!

>>274
( ´,_ゝ`)
COMを語るのは1億年早えよ(プ
てめえみてえなアフォは味噌汁で顔洗って出直して来い w

>>292-297

ネ タ に マ ジ レ ス す る な
>>274
「COM」って言葉を使ってみたかっただけなんちゃうかと(略
ねえねえ聞いておくれよ。漏れの体験談なんだけどさ。

くだんのNothingの件なんだが、サーバー上のJetをクライアントのVB6から叩く
ソフト作ってた時、はじめはNothingせずにCloseだけするコードを書いてたさ。
そしたら実行と終了を繰り返している内に動作がどんどん遅くなってね、最後には
クライアントを再起動せざるを得ないようになったんだよ。

で、Nothingするようにしたら問題が一発で解決したから、理由や仕組みはともかく
Nothingって馬鹿にできないなーと。M$製品なんだから四の五を言わずに…(以下略)
305名無しさん@そうだ選挙にいこう:02/12/09 19:55
なるほど!
だけどADOだったら大丈夫??
>>304
仕組み理解しようぜ。
>>306
釣られんなよ
308デジ-デジ機種変:02/12/09 23:15
>>307
いや、よく理解してないヴァカか作ると >>304 みたいになることあるぞ。
>>308
それには同意。
310名無しさん@そうだ選挙にいこう:02/12/09 23:36
ここは不親切なインターネットですね
>>309
身をもって知る、これ最強!!! 実践あるのみだな(w
312名無しさん@そうだ選挙にいこう:02/12/10 00:48
もったいぶらないで教えてくれよ〜ン
>>312
本なり買って少しは自分で調べろ
それが出来なきゃACCESSなんてやめてしまえ
314時間がないっす:02/12/10 12:54
PC WIN XP Access2002でSQLServer2000のテーブルの内容を
引っ張ると文字化けしてしまいます。(テーブルがCOBOLで作られているらしい)
文字化けせずに読む方法は有りませんか?

悔しいがワラタ
テーブルがCOBOLで?
317名無しさん@そうだ選挙にいこう:02/12/11 10:23
COBOLで!
!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!
!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!
!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!
318名無しさん@そうだ選挙にいこう:02/12/11 12:40
椅子はFORTRANで?
319名無しさん@そうだ選挙にいこう:02/12/11 13:47
FORTRANで!?
!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!
!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!
!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!(゚∀゚)!
320質問者:02/12/11 14:01
ACCESS2000の環境でACCESS97のMDB開きました。
「オブジェクトの設定を変更することはできません」とメッセージが出ます。

で、そのMDB内のテーブルをエクスポートしたいのですが、
テキスト形式ならエクスポートできるのに、Microsoft Excel形式だと
「データベースまたはオブジェクトは読み取り専用なので、更新できません。」
というエラーになってしまいます。
このエラーの理由がよくわかりません。
エクスポート時にオブジェクトを更新してるんでしょうか?
また、MDBをACCESS2000形式にしないでこのエラーを回避することはできないでしょうか?
わかる方どうかお願いします。
>>320
その97のMDBファイルをコピーして、1つを2000形式に変えてエクスポートすれば?
322320:02/12/11 14:26
>>321
それでもいいんですが、現行のMDBからのエクスポート方法があれば知りたいです。
>>322
一時的にエクスポートするって事でいいんですよね。

当該テーブルを右クリックして現れるメニューから
「エクスポート」でファイルの種類をExcelに…
できますが…
324名無しさん@そうだ選挙にいこう:02/12/11 14:46
VBからAccessオブジェクトをコントロールしたいのですが。

Dim AcObj As Access.Application

Set AcObj = CreateObject("Access.Application")
AcObj.Visible = True
AcObj.OpenCurrentDataBase "C:\aaa.mdb"

'レコードの変更等の確認ダイアログを表示させるようにする
With AcObj
.SetOption "Confirm Record Changes", True
.SetOption "Confirm Document Deletions", True
.SetOption "Confirm Action Queries", True
End With

この後、オブジェクトから起動したアクセスのテーブル上でレコードあるいは
オブジェクトを削除しますが、確認メッセージが出てきません。

試しにGetOptionでプロパティを取得しましたが上記についてはいずれも
Trueになっていました(いったんFalse→Trueに戻したりもしてみました)。
Excel VBAでやっても結果は一緒。Accessをオブジェクトとしてではなく
アプリケーションとして起動、VBAで同じ操作をした場合は確認ダイアログが表示されました。

オブジェクト上で上記の確認ダイアログを表示させるようにはできないものでしょうか。
よろしくお願いいたします。
そんなこと悩むなんて人生の浪費だよ 別口で逃げなよ
326320:02/12/11 15:06
>>323
それでもエラーが出ちゃいます。

テキスト形式だと問題ないんですけどねぇ。

>>322
Access97で開け。
んじゃてきすとをえくせるにすれば
329320:02/12/11 15:44
すいません。
>>323の方法、及びメニューからエクスポートできました。

まだ詳しく調査できてないんですが、どうやらユーザの権限とかが絡んでいるようです。
ドメインにログオンした状態だとエクスポートできなかったんですが、
ローカルにログオンした状態だとエクスポートできました。

もうちょっと調べてから出直します。
あいすみませんでした。
330名無しさん@そうだ選挙にいこう:02/12/12 10:35
Form_Unloadイベントで、引数CancelにTrueを指定しても、問題無く
終了するんですが、これはどうやってキャンセル出来るようにするのですか?

今やったのがこれです。

Private Sub Form_Unload(Cancel As Integer)
  Dim ret As Long
  
  ret = MsgBox("本当に終了しますか?",vbOkCancel)
  If ret = vbCancel Then Cancel = True
  
End Sub

ステップ実行すると、ちゃんとCancel = Trueの部分は通っています。
御指南おながいします。
?特に間違いはなさそう
form_unloadで何かほかにもやってたらコードうpしてね
>>331
すみません、これしかやってないっす。
強いて言えば、ホントは
ret = MsgBox("本当に終了しますか?",vbInformation + vbOkCancel, "確認")
としているくらいです。(書くの面倒だったから端折ってスマソ)

VB6だったらこれで止まるので不思議で仕方ない…。
ちなみに書きそびれてましたが、Access97です。
(関係ないだろうけどコネクションはDAOです)
AC97で同じコード動かしたら、普通にキャンセルできますた

[デバッグ]→[すべてのモジュールをコンパイルして保存]してもコンパイルエラーでない?
334名無しさん@そうだ選挙にいこう:02/12/12 11:45
>>333
出ませぬ…。
Accessが逝っているのかもしれないので、再インストロールしてみます。
駄目だったら家帰ってから家で試します。

スレ汚しスマソでした。
オ!なんであがってんだ!重ね重ねスマソです…。
Access95〜2000を勝手に判別して
それぞれのexeを勝手に見つけて
該当するバージョンで立ち上げてくれるソフトってないでしょうか?
97・2000はあるのですが・・・
ガイシュツだったらスマソ
>>336
無い。mdbは開いてみるまでバージョンは分からない。
338336:02/12/12 15:03
>>337
サンク
使用OS:w2k
ACCESSのバージョン:2000(SR-1)

質問:

一つのレポートにサブレポートを使って下記のような出力をすることは可能ですか?
可能ならばその方法をお教え頂けますでしょうか。

クエリ結果
レコード1>■
レコード2>□
レコード3>△
レコード4>▲

レポート
1ページ目
■□
■□
2ページ目
△▲
△▲
以下続く・・・
340名無しさん@そうだ選挙にいこう:02/12/12 19:04
>>339
すみません、私には貴方の意図が読み取れませんでした。

次の方どうぞ
分かってんのは自分だけなんだろうな(w
342名無しさん@そうだ選挙にいこう:02/12/12 20:54
>>339
レポートの左部分だけ作成して、ページ設定で袋とじを指定すれば可能
サブレポートは不要

>>340
職業がSEなら失格!
そうかな、あの図じゃあ、あの態度で正解じゃないかなぁ。
344名無しさん@そうだ選挙にいこう:02/12/12 21:28
ところで、質問なんですけど、JETのSQLはSQLサーバーのに準拠しているのでしょうか?
内部結合をORACLみたくWHERE句に書いてもOK?
一応動くのだけど一寸不安なのです。
明らかに準拠していない。
あとORACLEな。
>>342
質問が質問なら回答も回答ですね。 「類は友を呼ぶ」と言いますが・・・
>>346
なんか、嫌なことでもあったのか ?
348Tommy:02/12/12 23:46
>>298
薬品管理システムはPCに詳しくない人も使うので、ボタンひとつ
押せばデータがMOにバックアップされるような仕組みにしたいと
思ったものですから。
2002からANSI92 SQLに準拠させるオプションがある。
不完全だけど
>>348
バックアップはMDBのテーブルという形ではなくてもいいのでは?
CSV等に書き出してやればどうでしょうか?
MOドライブの媒体有無チェックを入れてやったりして…
351名無しさん@そうだ選挙にいこう:02/12/13 09:05
>>348,350

何故 FileCopy では逝けないのだろう・・・
 ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧ ∧
  (  ,,)
  ./  |
 (___/
353その1:02/12/13 09:45
>350
Access2000で分割したデータ部分のバックアップなら、
私は自分でバックアップmdbにコピーするように作ったよ。
バックアップmdbも自由にドライブを選択して名前も設定できるようにした。
ただし、テーブルはそのままバックアップ用に指定したmdbにコピーするようにしてる。
そこまで行ったら、結局、選択したバックアップmdbからインポートする機能も作ったけど…
354その2:02/12/13 09:54
私の方法は
1)バックアップ先を指定する
2)バックアップ先に以下の指定でテーブルをコピーする
docmd.transferdatabase acexport,"microsoft access",[指定先mdbのパス],actable,actable,[テーブル名1],[テーブル名2]
1)は当然、
a)Accessで「ファイルを開く」ダイアログを表示させるか、フルパスを指定する必要
b)作成されていないmdbを指定した場合、新規にmdbを作成する必要 の2点が問題になります。
また、2)の構文の[テーブル名1],[テーブル名2]はどちらかがコピー元名で片方はコピー先名になります。

蛇足ながら、テーブルを分割したならば起動時にテーブルのリンクを確認したり、
ボタン一つで後からリンクを変えるような形にした方がいいと思う。
頑張ってね!
355その1と2を書いた人:02/12/13 09:58
ごめんね 相手を間違えてしまいました
353、354のカキコは>348 Tommyさんへでした…
356名無しさん@そうだ選挙にいこう:02/12/13 12:13
レポートの日付テキストボックス[txtDay]が25日の時のみ、
給料日ラベル[lblSalary]を表示させたいのですが、
レポートのラベルにはVisibleプロパティが無いみたいで
表示/非表示の切り替えができません。
この場合はどのようにしたらいいのでしょうか。
おねがいします。
357名無しさん@そうだ選挙にいこう:02/12/13 12:40
>>356
あるよ!
ただし、レポート明細でレコード単位にプロパティーを変更することはできません。
だから、クエリーを使用して、レコードソースを編集するようにしたらどうでしょう?
>>356

'印刷させたいの場合
Me.lblSalary.Caption = "印刷するよ"
'印刷させたくないの場合
Me.lblSalary.Caption = " "

とか

同じ大きさの透明なラベルを重ねておき、印刷させたくない場合にこのラベルを白色にする

とかいろいろ工夫してみれ。
>>356
給料日ラベル[lblSalary]にこだわらなくとも
非連結テキストボックスで代用すればいかが?

=IIf(Day([txtDay])=25,"これぽっち","")
360名無しさん@そうだ選挙にいこう:02/12/13 15:15
Access2002です
Beepで警告音が鳴らないのですが、何が原因でしょうか?
ぐぐるで検索したら一つだけ同じ内容がヒットしたのですが、
URLが消えていてみる事が出来ませんでした。よろしくお願いします。
361名無しさん@そうだ選挙にいこう:02/12/13 16:14
教えて下さい。
表形式フォームで「詳細」部に置いたコマンドボタンを押すと
次のレコードに全く同じものをコピーするようにしたいのですが
キー送信でひたすらCTRL+7、tabしか考えつかず困っています。
厨な質問で申し訳ないですがお願いします。
>>360
他の音は鳴るPCなの?
鳴らないならスピーカー買え。
あとGoogleはキャッシュという機能があるので、そこ見てみれ。

>>361
ワーク用の配列、もしくはテーブルでも用意していったん格納。
それを追加クエリでもDAOでもADOでも使って追加してから
Me.Requeryじゃいかんのか。
363360:02/12/13 16:39
>>362
音はなります。普通のアプリの警告メッセージはジャンジャンなりますので。
googleのキャッシュ見たんですが、ツリー型CGIのタイトルにヒットしちゃったので
キャッシュでそこに飛んでも肝心の中身(本文)が見れないんですよ・・・・
>361
仮に「レコードコピー」と言うコマンドボタンを押すと、次のレコードにレコードの内容をコピーするとする。
レコードコピーを押す(クリック時)にプロシージャを記載する。
以下は記載内容
1)DAOでテーブルを開く(仮にrstとする)
2)変数に各フィールドの値を代入(仮にフィールドAの値を変数a、Bをbとする)
3)コピーしたいレコードの内容をコピーする場合
 A.新規レコードにコピーする場合、rst.addnewでrst!A=A rst!B=b rst.update
 B.既にあるレコードにコピーする場合、コピー先レコードを探す(ループを使うかSeek)
  見つかったらrst.editでrst!A=A rst!B=b rst.update

変数を持ちたくなかったら、フォームにテキストボックスを作り、データを選択したらその内容を反映するように設定。
後は、コピーしたいレコード(新規か既存か)にrst!A=Form!フォーム!テキストボックスAと言った形で代入。
新規ならば.addnew、既存の上書きなら.editで最後は.updateで締めるのはお約束。
以上、簡単でしたが…
>>360
OSが何なのか、わからんけど Windows2000の場合
「コントロールパネル」->「サウンドとマルチメディアのプロパティ」の
「サウンドイベント」で音の割り当てを調べると、「一般の警告音」に
「ding」が割り当てられていて、Beepメソッドで鳴らしているのは、この
音なんだわさ。 手掛かりの一つとしてあげておく。
366360:02/12/13 17:28
>>365
ありがとうございます。OSはW2Kです。そこも確認したんですが、
サウンドのプロパティで警告音をテストしてみるとちゃんと鳴るし・・・
ためしにEXCELでマクロ作ってBeep入れてみたらやっぱり鳴らない。
どっかファイルが壊れてるのかなぁ・・・・・
同じ機械にインストールしてあるAccess2000でもダメでした。
モジュールのコンパイルエラーとかで出てくるエラー時はちゃんと音が
鳴るんですよ。VBAやマクロでのBeepにだけ反応してない感じで・・・・・
367361:02/12/13 17:34
>>362さん、>>364さんありがとうございます。
当方、DAOとVBAの違いもまだわからないのですが
週末を使って頑張ります。またよろしくお願いします
368364:02/12/13 18:20
>367 361さん
DAOでのデータ操作はとりあえず、AccessVBAの本でもどこかで
立ち読みして知識をもっておいた方が良いと思う。
簡単な決まり事さえわかってしまえば、便利だし簡単にレコード操作ができるよ。

頑張ってね!
369名無しさん@そうだ選挙にいこう:02/12/14 08:14
DAOを覚えるよりADOを覚えたほうがよいと思います。
25歳。
去年まで金無し君だったけど、オンラインカジノとパチンコで
二年で350万貯めた。一度やってみなよ。
初回のみだけど、1ドル以上のチップを買えば30ドル(4000円くらい)貰える。
もらうだけもらってプレイせずに換金することもできるし、ルーレットで赤か黒に
思い切って賭けてしまえば50パーセントで二倍になる。
金なきゃオフラインでゲームすればいいだけ。暇つぶしになる。
ビデオポーカーとかスロとか色々あるのでマジでお勧め。
http://www.imperialcasino.com/~1kl5/japanese/
>>369
ACCESS2000以上の環境があるならね。
97の人はADO使うのに、Mdac2.5を入れないといけない。
ちなみにJETにはDAOの方がアクセス早いってのも覚えておいた方が良いかも。
372名無しさん@そうだ選挙にいこう:02/12/14 10:19
373名無しさん@そうだ選挙にいこう:02/12/14 10:22
テキストボックスの書式設定において文字配置を
縦方向について中央とはできないのでしょうか
>>373
無理です。
手法としては3D、枠線を実線にしてテキストボックスと見た目一緒にしたラベルを後ろに置いて、
枠無しにしたテキストボックスを好きな位置に重ねるのがベターだが、コントロールをたくさん
置くと重くなって後から苦情が出たりする元なので、デフォルトで我慢するのが最強。
Access2000はテキストボックス内にどれだけ余白を取るか指定できるので
擬似的に中央配置に出来ます。
>>375
うん、おれもいつもそうしてる。
中央揃えができるようになればいいのに。
377名無しさん@そうだ選挙にいこう:02/12/15 14:21
列Aと列Bを比較して、同じ値の行だけを抽出する事って可能ですか?
>>377
Access2000 に作らせて見た...

SELECT [テーブル1_1]![列A]=[テーブル1_2]![列B] AS 式1, *
FROM テーブル1 AS テーブル1_1, テーブル1 AS テーブル1_2;
>>378
すまん大間違い。

SELECT * FROM テーブル1 AS テーブル1_1, テーブル1 AS テーブル1_2
WHERE [テーブル1_1]![列A]=[テーブル1_2]![列B];
380377:02/12/15 15:29
>>378さん

早速のレスありがとうございます。

メインクエリのFROM句の予約語EXISTSを使用しないフィールドを複数返すサブクエリを作成しました。
サブクエリのSELECTステート面とを変更し、1つのフィールドだけを指定してください。

ってエラーが返ってきたのですが、何か間違ってるのでしょうか?

(SELECT * FROM 会員データ AS テーブル1_1, 会員データ AS テーブル1_2
WHERE [テーブル1_1]![登録日時]=[テーブル1_2]![最終利用日時];)

テーブル名:会員データ
No. 登録日時 最終利用日時
0001 2002-12-01 00:00:00 2002-12-01 00:00:00
0002 2002-12-02 00:00:00 2002-12-03 11:11:11
0003 2002-12-03 00:00:00 2002-12-03 00:00:00
0004 2002-12-04 00:00:00 2002-12-04 22:22:22

具体的には、この中から001と003だけ抜き出したいのです。
>>380
取りあえず...

SELECT *
FROM 会員データ AS テーブル1_1, 会員データ AS テーブル1_2
WHERE テーブル1_1!登録日時=テーブル1_2!最終利用日時;

で、できてるよ。(Access2000)
382名無しさん@そうだ選挙にいこう:02/12/15 16:06
Access2002で条件付き書式の色は、ポップアップから選択できる色しか
指定できないんでしょうか?
色コードで指定したいんですが…。
383377:02/12/15 16:53
>>381さん
即レスありがとうございます。

クエリの抽出条件の所に書けば良いんですよね?
やっぱり同じエラーが出ます。
自分もACCESS2000なのですが・・・

自分が根本的な間違いをしているのでしょうか。
ACCESSの勉強をして書いて頂いたクエリの内容を理解するか、
7000件弱あるデータを目でチェックして抜き出すか・・・
うぅ〜、後者は選択したくないです(鬱

せっかくレスして頂いたのに、理解できなくてすいませんでした。
なんとか頑張ってみます。

>>382さん
もしかしたら、EXCELじゃないですか?条件付き書式って・・・
間違ってたらすいません。

とりあえず、EXCEL相談所はこっちですよ。
http://pc.2ch.net/test/read.cgi/bsoft/1038376475/
384名無しさん@そうだ選挙にいこう:02/12/15 17:12
383>>382

いえ、フォームのテキストボックスで右クリックしたプルダウンメニュー
で設定できる条件付き書式です。。
385名無しさん@そうだ選挙にいこう:02/12/15 18:51
>383 377さん
>クエリの抽出条件の所に書けば…
多分思うに、抽出条件のところではなく
クエリーのデザイン画面の他に「SQLビュー」ってのがあるから
そこにコピペしてみればできるのではないかと…
自分は381ではないので、違っていたらゴメン
386名無しさん@そうだ選挙にいこう:02/12/15 18:51
>383 377さん
>クエリの抽出条件の所に書けば…
多分思うに、抽出条件のところではなく
クエリーのデザイン画面の他に「SQLビュー」ってのがあるから
そこにコピペしてみればできるのではないかと…
自分は381ではないので、違っていたらゴメン
>>385-386
いますぐABornのバージョンアップしる。
2重カキコしなくなる。
388381:02/12/15 20:09
>>383
説明が不足していたみたいで申し訳ない。
>>385 が言う通り、SQL ビューに直接コピペしてくれ。
クエリの抽出条件でもできないことはないけど、結局 [会員データ_1]![最終利用日時] とかは手で書かないといけないから、SQL 直書きのほうがわかりやすいと思う。
389377:02/12/15 20:32
>>385さん、>>388さん

ありがとうございます!できました。
これで鬱にならずに済みます(笑

>>384さん
すいません、ACCESSにも条件付書式があったんですね・・・
わからないくせにでしゃばってしまい、申し訳ありませんでした。
390385:02/12/15 21:39
>387
ありがとう!書き込んだあと「げげッ!」って思って、バージョンアップしたよ。
391名無しさん@そうだ選挙にいこう:02/12/15 22:15
Accessってoo4oを使えなんてなんてこといいやがるんですか?
なんでそんな不便な組み合わせ・・・。
>>392
> Accessってoo4oを使えなんてなんてこといいやがるんですか?

何を唐突に?
バックエンドDBMSがOracleって場面以外ではoo4oがからむことは無いでしょ
393名無しさん@そうだ選挙にいこう:02/12/15 23:38
vbでやりませう。
フォームも使えんし
394トム:02/12/16 09:41
質問です。月に1度、アクセスで銀行引落をしています。
その後、そのデータをもとにクエリーで高額未納者のリストを作成しております。
そして、そのリストを元に高額未納者へハガキを手書きで書いております。
項目は、未納金額、住所、名前、引落口座などです。
これを自動的に、はがに自動的に転送できる方法はありますか?
なおハガキはワードでもエクセルでも作っています。
よろしくお願いします。
>>394
ワード側で未納者のデータを差し込みすれば?
396361=367:02/12/16 11:41
>>368さん、レスありがとうございます。
DAOでは、未熟なため上手くいかなかったのですが
>>362さんの案で出来ました。
みなさんありがとうございました。
397368:02/12/16 13:06
>396
解決してよかったですね。
DAOの操作はそんなに難しいものではないので、
遊びがてら覚えていって損はないと思います。
これからも、頑張ってください〜
>>373-376
VBならSendMessageでできそうだけど、Accessのテキストボックスは
Windowハンドルを公開してないからどうしようもないね。
399トム:02/12/16 13:57
>>395
すいませんさっぱりわかりません。
初心者なんで、詳しくお願いします。
Word 差込印刷 で google とかで検索したら沢山出てきますから調べてください。

初心者なら、Accessのテーブルを取り出して使えばウィザードつかうのでどうでしょう?
こんなのとか↓
http://www.templatebank.com/atena/ki_word01.htm
401アクセス初心者:02/12/16 14:50
今卒業制作でaccessでデータベース作ってるんですが、フォーム画面を
ワードとかに貼り付けるいい方法ないですか??
>>401
PrintScreen
403アクセス初心者:02/12/16 15:28
>>402
やっぱりそれしかないですよね、ありがとうございます
>>399
さっぱり分からないのはAccess?Word?
それとも両方とも?

方法は
1.Accessのレポートではがきとして印刷する
2.Excel形式やテキスト形式として書き出してWordで差し込み印刷する
3.AccessのテーブルのままWordで差し込み印刷する
ぐらいかな?

※2と3は差込元をAccessにするか、その他のデータにするかってぐらいの違いです。
405名無しさん@そうだ選挙にいこう:02/12/16 16:43
フォームの一番下に表示されるレコードの移動をする奴の
レコード総数(レコード:〜〜 / ?? ←スラッシュの右側の所)を取得する
方法をおしえてください。

※ サブフォームのレコード数を取得したいため
406名無しさん@そうだ選挙にいこう:02/12/16 17:03
>>398
普通にできますが…
>405
Dcount
408名無しさん@そうだ選挙にいこう:02/12/17 00:45
アクセス2000で、あるテキストボックスの中身を
メールアドレスのフィールドにあるアドレスにおくる
ってことできない〜?
>>394 (トム)と回答者のみなさんへ
「未納者のリスト」がありながら「ハガキを手書き」してるってえのも、
けっこーありがちで笑えなかったりする。
複数のソフトを使うのは混乱する可能性もあるので、
Accessのレポートでやるのがよいのでわ。
宛名ラベルも本文(裏面)もウィザードを元に作れる。
ウィザードの説明文とヘルプファイルの該当箇所は熟読。(解説本でもよい)
テキストボックスの位置の微調整とかが死ぬほど苦痛だったらやめる。
>>408
SendObjectメソッド
>>409
しかしトムやる気あんのかなぁ?
412おながいします:02/12/17 09:47
テーブルを「起動時の設定」で自動的に開いているのですが、アクセス
自体のウインドウの大きさを決めておくことはできないんでしょうか?
で、他のデータベースを開くときには影響ないようにしたいのです。
413名無しさん@そうだ選挙にいこう :02/12/17 10:41
Win2k Office2k を使ってます。
リレーションシップで、2つのテーブルの同じ項目を関連付けたようと
ドラッグして線を結び作成ボタンを押すのですが、「1」、「∞」のマーク
が出てこないし、片方のテーブルに数値を入れても、もう一方のテーブルの
数値はそのままになっています。

 Officeの達人のサイトを見ながらやりました。
どうすればうまくいくのでしょうか?よろしくお願いします。
「Officeの達人」www.asahi-net.or.jp/~ja6m-tn/access-3.htm
>>413
どんなテーブルを作ってるのかわからないとアドバイスできない。
おそらくリレーションシップについて理解できてないだけだと思う。
>>413
サイト見たけど、こりゃまるきりの初心者向けやん。
最初から順番に作業して行くことが前提になってる。
最初にAccess同梱のテンプレートを使ってデータベースを生成しているので、
本当は自分で開発しないといけない機能が組み込み済みになってる。
このサイトの内容からやりたいところだけ抜き出してやろうとしてたんだったら、
そりゃうまくいかんでしょ。
>>414に同感。勉強しなおしだね。
416名無しさん@そうだ選挙にいこう:02/12/17 11:00
>>414 ありがとうございます。
 テーブル1
 商品名:ラジカセ
 数量 :3個
 店名 :アメリカ

 テーブル2
 商品名:ラジカセ
 数量 :3個
 値段 :1万円

 テーブル1の商品名にラジカセ、数量に3を入力すると、テーブル2に
自動で入力するようにしたいんです。
よろしくお願いします。
>>416
根本的に間違ってる。
リレーションは自動に入力するためのものじゃない。そんな機能はない。
そのテーブルだと2つに分ける理由も見あたらないし。
とりあえず簡単そうな本でいいから一冊読んでくれ。
>>415 >>417 ありがとうございますた。
逝ってきます。
419名無しさん@そうだ選挙にいこう:02/12/17 11:55
Win98se,Ac97です。

テーブルで、フィールド毎に入力できる文字コードのエリアを限定したいのです。
例)
 営業所名…第一・第二水準の2バイト系のみ
 営業所TEL…英数字および記号1バイト系のみ
 数量…数字のみ

入力規則で何とかなりますか?
 
エクセルで同じような表が3つ(3ファイル)あります。

項目を1つ変更するのに、3箇所変更しています。
アクセスで1つ変更したら、エクセルファイルの3個所変更する
ようにするにはどの機能を使えばできますか?

て優香、こういうときってどのソフトを
どう使うのが一般的ですか?
>419
第一・第二水準の2バイト系…ひらがな
英数字および記号1バイト系…半角英数字
でいいのでしょうか?

もしそうであれば、Access2000ではテーブルのフィールドで
IME入力モードを"オフ"…半角英数
IME入力モードを"ひらがな"…ひらがなおよび漢字変換
などの指定ができます。恐らくAccess97でもあると思います。
もし、入力フォームを作成してあるならば、テーブルでの指定よりも
フォームのコントロールでプロパティ/その他タブ/IME入力モードでの切り替えを
使用した方がいいと思います。
422名無しさん@そうだ選挙にいこう:02/12/17 13:42
リレーショナルデータベースって便利なものみたいですが
どう便利なのかいまいちわかりません。

ttp://ai.u-shizuoka-ken.ac.jp/~gakucom/report/database/relational.html
このサイトを何回も読んだのですが、他に便利な例を教えてください。
よろしくお願いします。
>420
1)Access側からExcelファイルの該当個所3箇所に値を代入する
2)Excelのファイル1つに3つの表があって、それぞれ必ず同一の
 数字が反映されるとしたら、一番メインになる様な表を他の2
 つの表では参照させるようにして(リンク)、Accessでそのメ
 インになる表の該当箇所を変更すれば、他の2つは自動的に
 変更される。
3) 2)と同様だが、Excel側の変更はExcelでVBAなりマクロなりを組む

>420の質問からは以上くらいしか思い浮かばない…
424名無しさん@そうだ選挙にいこう:02/12/17 13:55
2000の表形式フォームで質問です。
ある項目のテキストボックスに特定の値が入った時だけ
同じレコードにあるボタンを表示させようと思っています。

Dim shu As Integer
shu = Me!種別
'55のときだけ原価を見せる
If shu = 55 Then
Me!原価.Visible = True
Else
Me!原価.Visible = False
End If

こんなのを色々なところに入れたりDo〜Loopしたりしましたが
全レコードに表示されてしまうか
全レコードで非表示になってしまいます。
必要なところ([種別]=55)だけに表示は可能でしょうか、教えて下さい。
425419:02/12/17 14:10
>>421
97では「漢字変換モード」ですね。
この機能は既に設定してあるんです。
が、これだと
 ひらがな…変換で1バイト系も入力できてしまう
 半角英数字…IMEバーいじると1バイト系のカナも入力できてしまう
  (ひらがな使用不可 の方が良さそう?)
のです。

ホストのオフラインプリンターにかけるんで、この辺は不可!というのを徹底させたいんですよね…
>424
条件付き書式をヘルプで
427名無しさん@そうだ選挙にいこう:02/12/17 14:35
アクセス97で顧客管理をしているのですが、広告郵便の
割引率を上げるためにDMのラベルにカスタマーバーコードを
付けたいと思っています。。。。が、これって97ではできないのですか?
2000にはそういう機能がデフォルトでついているっぽいのですが、、、、
428424:02/12/17 14:45
>>426
コマンドボタンなので条件付き書式が無くて困ってました。
でも、426さんのレスを見てテキストボックスに編集ロックをかけて
普段は使用不可、条件Trueで有効にしてクリック時イベントを設定し
擬似コマンドボタン化を思いつき、解決しました。
ありがとうございました。
>425,419
入力完了後のフォームを閉じる時や、出力ボタン?などの
処理の前にデータをチェックする関数を作っておくしかないかも。

画面には(全角で入力してください)とか書いておいて、
チェックの関数で強制的に全角にしたりとか、半角カナが存在したら
そのコントロールにフォーカスして、エラーメッセージを出すとか。
>425
IMEバーは表示させないでタスクバーに格納 (w
後は入力規則か、入力フォームのコントロールで入力後のチェックをして
禁則文字を使用したらメッセージを出すしかないのでは?
そこまでやるならテーブルに直接入力させるのはダメだと思うけどなぁ…

入力フォーム作って入力確定後にチェックして、チェックが通ったらテーブルに格納する、
テーブルに格納されたデータをプリンターへ送る…
あるいは表示のデータだけプリントすればいいのならテーブルに格納する必要はないし…
そこまでぎちぎちにやりたいなら、フォームを使って上記の手順を踏んだ方がいいと思うけど?
>427
97でもバーコード印刷できる。昔、始めてAccessを使うことになったのはバーコードのためだった…
インストール時にバーコードコントロールだったか?が入っている必要がある。
私はレポートでしかやらなかったが、
レポートでBarcordControlObjectだったかをプロパティで設定すれば印刷可能。
432419=425:02/12/17 15:27
>>429-430
フォーム作ってやってみます。thx
>>425

 営業所名…第一・第二水準の2バイト系のみ

  入力は好き勝手にさせて(一応は基準を決めておく)
  プリント前処理でデータを加工した方がいいのでは?

 営業所TEL…英数字および記号1バイト系のみ→書式を使えば何とかなりそう
 数量…数字のみ→書式を使えば何とかなりそう
434名無しさん@そうだ選挙にいこう:02/12/17 16:12
ACCESS2000で
特定のフォームでだけPAGEUP・PAGEDOWNと
マウスのホイールを無効にする設定があれば教えて下さい。
>>434
PAGEUP・PAGEDOWNの無効化

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 33 'PageUp
KeyCode = 0
Case 34 'PageDown
KeyCode = 0
Case Else
End Select
End Sub
436434:02/12/17 17:31
>>435さん、上手くいきました。
各コントロールに貼り付けるんですね。
ありがとうございます。
437435:02/12/17 17:37
 ###### スクロール禁止の標準モジュール ######
Option Compare Database
Option Explicit

Public Declare Function SetWindowLong _
 Lib "user32" Alias "SetWindowLongA" _
    (ByVal hWnd As Long _
    , ByVal nIndex As Long _
    , ByVal dwNewLong As Long _
    ) As Long
Private Declare Function CallWindowProc _
    Lib "user32" Alias "CallWindowProcA" _
      (ByVal lpPrevWndFunc As Long _
      , ByVal hWnd As Long _
      , ByVal Msg As Long _
      , ByVal wParam As Long _
      , ByVal lParam As Long _
      ) As Long
Public Const GWL_WNDPROC = (-4)
Private Const WM_MOUSEWHEEL = 522
Public DefaultWndProc As Long

'つづく
438435:02/12/17 17:42
Public Function MyWndProc(ByVal hWnd As Long _
      , ByVal uMsg As Long _
      , ByVal wParam As Long _
      , ByVal lParam As Long _
      ) As Long
    Select Case uMsg
    Case WM_MOUSEWHEEL
    '処理をしない
      Case Else
      MyWndProc = CallWindowProc(DefaultWndProc _
        , hWnd _
        , uMsg _
        , wParam _
        , lParam)
    End Select
End Function

'標準モジュールここまで
439435:02/12/17 17:50
'######Formのクラスモジュール######

Private Sub Form_Unload(Cancel As Integer)
'マウススクロール抑制解除
Call SetWindowLong(Me.hWnd _
, GWL_WNDPROC _
, DefaultWndProc)

End Sub
'ここまで
以上、昔どこかでひらって来たもの
尚、一度ACCESSがハングアップしますので再起動してください。
なせハングアップするのかは不明(誰か教えて)
>>437-439

> 尚、一度ACCESSがハングアップしますので再起動してください。

サブクラス化は避けた方が無難と思われ。
441435:02/12/17 18:17
Private Sub Form_Load()
'マウススクロール抑制開始
DefaultWndProc = SetWindowLong(Me.hWnd _
, GWL_WNDPROC _
, AddressOf MyWndProc)
DoCmd.Maximize

End Sub

↑大事なものを忘れてました。

>>440
どうすればいいでしょうか?
正直、コスト対効果のバランスが取れてないように見える
443名無しさん@そうだ選挙にいこう:02/12/17 22:01

Access2000で会社の顧客データベースを作っています。
このデータベースの情報(メールアドレス)を
Outlook(+Exchange Server2000)
でメールを送るときに利用したいのですが、
どのような方法があるでしょうか。
また、Exchange + Outlookが社員のメール環境になっている会社は
少なくないと思いますが、
そのような場合外部の顧客データベース(AccessやExcel)とは
どのように連動させているのでしょうか。
>>443
使ったことないので微妙だが、OutlookのVBA使えばいけんじゃないの?

  Dim objOlApp As Object
  Set objOlApp = CreateObject("Outlook.Application")

とかすりゃOutlookに干渉できる。

しかし、Outlook自体、危険性が非常に高いので、Mailtoとかで
「通常使うメーラー」に干渉してった方が賢いと思う。
あらゆる意味で。
445名無しさん@そうだ選挙にいこう:02/12/17 22:42

>>443
なるほど。AccessのVBAでOutlook(又はExchange Server)の
アドレス帳を作るのではなくて、
OutlookのVBAでAccessのデータベースをインポートするわけですね。
OutlookではVBAを書いたことはありませんが、
それならやれそうですね。ありがとうございますー
446名無しさん@そうだ選挙にいこう:02/12/17 23:16
2000でレポートを作っています。
縦長の表形式のサブレポートをメインレポートの
横長のスペースに逆N字型に埋たいのですが
どのようにしたらできるのでしょうか?
やっぱり適当なところで分割しなければ駄目でしょうか?
>>446
意味がわからんが長い表の場合は分割。
これ最強。
448名無しさん@そうだ選挙にいこう:02/12/18 09:44
せんせー! 質問です。
クリエでの計算がうまくいきません。

ttp://www.asahi-net.or.jp/~ja6m-tn/access-5.htm
このサイトの下の方で、『[単価]*[数量]』という式が
ありますがクリエのどこを選択して、この式を入れたらいいのですか?
よろしくお願いします。
>>448
絵ばかり見て文章読まない人ですか? 説明文に書いてあるやん。
書いてあることの意味がわからなければ、いろいろ試せば見つかるでしょー。
>>449

> 読まない

「読めない」が正解と思われ。
ところで、「クリエ」ってナニよ?(禿藁
>>450
SONYのPDAですなw
>>448 のURLを見たが、開発者向けの説明ではなく、あきらかにEU向け。
操作レベルの説明はあるが、概念やコンセプト等の説明は一切ないので、
DQNを生成する危険性が高いと見た。
>>450

↓に出ている。(ページを「クリエ」で検索されたし)

ttp://www.joho-iwate.or.jp/video/j.html

確かにあまり一般的に使用される用語ではないが、恐らく、JetのSQLに固有の
「方言」と思われる。










・・・とネタにマジレスしてみるテスト(w
454448:02/12/18 10:47
>>449 せんせー! 脳汁あぼーんですた。
ありがとうございました。
455名無しさん@そうだ選挙にいこう:02/12/18 11:38
せんせー! 質問です。
フォームのコンボボックスのコードビルダがうまくいきません。

ttp://www.asahi-net.or.jp/~ja6m-tn/access-18.htm
このサイトの下の方で、VBに『me.自動的に開かせる項目名.Dropdown』を
入力するようにあるのですが、以下のエラーが出ます。
『コンパイルエラー:
 メソッドまたは、データ メンバが見つかりません。』

 どうしてでしょうか? よろしくお願いします。
>>455
小学校の先生にでも聞け。
>>453
ワロタ。半分以上クリエじゃん
>>455
開きたいフォーム上のコンボボックスの名前を
「自動的に開かせる項目名」に変更してみな
>>455
それをそのまま書いているんじゃあないだろうね?
「自動的に開かせる項目名」ってのは自分の作った
コンボボックスの名前ですよ?
もし、そのまま書いているレベルなのなら、そんなTips集みたいな
サイト見ずに初心者用のページから見ることをオススメします。
460446:02/12/18 12:36
やっぱり長い表は分割が最強なんですね。
ありがとうございましたです。
>>459

まともな大人なら、他人から指摘されるまでもなく最初からそうしているはず。
>>455に言っても無駄だと思われ。
>>453

> Windous95ってなに?Winndous95の特長

ワラタ。
まるでネタサイトとしか思えんが、ネタではないらしいからイタイ。

こ れ だ か ら 倒 北 痴 呆 の ヤ シ ら は
>>462

特殊な事例を一般論に敷衍するな、ヴォケ!
464名無しさん@そうだ選挙にいこう:02/12/18 15:12
せんせー! 質問です。
フォームのコンボボックスのコードビルダがうまくいきません。

ttp://www.asahi-net.or.jp/~ja6m-tn/access-18.htm
コンボボックスはできるのですが、▼に合わせると
空欄のわくが出るだけで、何も表示しません。

【テーブルは以下】
氏名商品名単価
山崎キリン\60,000
山本かえる\600
竹田キリン\10,000
田中かえる\500
鈴木さかな\200

【VBは以下】
Private Sub 商品名_Enter()
Me.商品名.Dropdown
End Sub

よろしくお願いします。
465464:02/12/18 15:54
お前ら早く教えやがれ、ゴルァ!
466464:02/12/18 15:55
age忘れますた
467464:02/12/18 16:05
おいお前ら、無視するな!
早く教えやがれ。
>>467
なんで同じサイトを引用し続けるんだ?(藁
そんなに信用してるんなら、そのサイトの作者にメールで質問すればいいだろ(藁
そのサイト叩いて欲しいんだったら余所行け。
469464:02/12/18 16:41
>>468 ニセモノが3人です。
荒れそうなので、逝ってきます。
470464:02/12/18 16:41
age忘れますた
471bloom:02/12/18 17:27
472ゲゲフソ:02/12/18 17:41
SQL用のクエリをACCESSに読ませなければならず困っているんですがパススルークエリーを使わずに下記のような文をどうやって直したらいいでしょうか?
SELECT
CASE WHEN dbo_CHINGINChk = 0 THEN '*' ELSE '' END AS CHINGIN,
473名無しさん@そうだ選挙にいこう:02/12/18 18:46
>>472
パススルークリエを使ってください。
474ゲゲフソ:02/12/18 19:27
ギャフン!!
475名無しさん@そうだ選挙にいこう:02/12/18 23:14
フォームの概観を変えるとき、
「フォームセレクタをクリックして■にしてからオートフォーマットを
クリックする」とMOUS試験の本にあるのですが、
フォームセレクタってどこにあるボタンですか?
それをせずにオートフォーマットしても概観変わりますが、
それではダメなのでしょうか。
概観?
>>475
あれ、フォームセレクタって言うのか…
フォームをデザインビューで開いた時に
フォームのタイトルバーのアイコンの下の四角い部分でしょ。
478名無しさん@そうだ選挙にいこう:02/12/19 09:58
>>477
475
です。あ、それのことか。ありがとう。
479名無しさん@そうだ選挙にいこう:02/12/19 12:37
>>472
ADOでカーソル開いて1件ずつ処理するってのは?
480名無しさん@そうだ選挙にいこう:02/12/19 12:49
 アクセス2kで、同じ行にない数字を足したり、引いたり
して計算したいのですが、どうやったらできるんでしょうか?
よろしくお願いします。
>>480
たしざんやひきざんは、しょうがっこうのせんせいか
おかあさんにおしえてもらいなさい。
482480:02/12/19 13:17
>>481 そんなひとはいません。
しってたらおしえてください。

同じ行にない、任意のセルどうしの計算をしたいんです。
483名無しさん@そうだ選挙にいこう:02/12/19 13:21
>>480

ExcelとAccessの違いを理解しませう
>>482
セルって何だ。
ADOでもDAOでも使ってデータ引っこ抜いてきて足せばよかろう。
485名無しさん@そうだ選挙にいこう:02/12/19 13:32
>>484

>>480 は四則演算のやり方がわからないそうです。
486484:02/12/19 13:37
>>485
まーまー。相談所だ。もすこし雰囲気よくやろうぜ。
ム板のVBスレのようにはなりたくないんだ。
487名無しさん@そうだ選挙にいこう:02/12/19 13:38
>>481 >>483-485

困り果てて藁をもすがるような気持ちで質問しているのに、冷たい人たち
ですね。スキルの低い人には手を差し伸べて助けてあげるのが大人として
の当然の気遣いでしょ?
あなたたちには社会人としての最低限のマナーもないんですか。
煽りだけの無責任な発言は不愉快ですし、迷惑です。やめてください!
(どうせ私の質問に答えるスキルもないんでしょ?)
488484:02/12/19 13:40
俺含めんなよ。(w
489435:02/12/19 14:09
>>487
スキルの低い人には教えられるがスキルの無いひとには
教えるの難しいんだ!

ウダウダ書く時間があるならもっと詳しい状況説明しろ!
490名無しさん@そうだ選挙にいこう:02/12/19 14:14
リレーションシップでテーブルを線でつなげるのはいいのですが
その線を削除したいときに、線が細いのでマウスカーソルが合いにくく
イライラします。 簡単に削除する方法はありますか?
>>488-489

>>487 はコピペだ。反応するな。
>>490
無い。
当たり判定はそう細くないと思うのでドンと逝け!

>>491
釣られた…鬱だ…。
493489:02/12/19 14:37
>>492
俺のほうがもっと欝だ。。。
494名無しさん@そうだ選挙にいこう:02/12/19 14:59
漢字入力すると、フリガナが自動で入るようにしたのですが
フォームを作成して入力後、そのフリガナが次のフォームにまで
残ってしまう時は、どこの設定を変更すればなおるのでしょうか?
テーブルAとテーブルBにリーダーシップを設定しているのですが、テーブルBが言うことを聞きません。
>>495
不覚にもワラタ
497名無しさん@そうだ選挙にいこう:02/12/19 15:19
>>495
テーブルのプロパティを確認してみてください。
相性プロパティの設定によっては、うまくリーダーシップが発揮されない場
合があります。

また、Bテーブルの性格プロパティが「気まぐれ」や「一匹狼」になっていま
せんか?
>>494
>そのフリガナが次のフォームにまで残ってしまう
意味不明。
Form1からForm2を開いて?
テキストボックスならText1.Value = ""で駄目なの?
499名無しさん@そうだ選挙にいこう:02/12/19 18:20
>>495
梅昆布茶を吹き出してしっまたじゃないか。
キーボードべちゃべちゃ。鬱。
500名無しさん@そうだ選挙にいこう:02/12/20 10:54
2000でコンボボックスのリスト外入力時の対処について教えて下さい。
リスト内から選択されたときは、値集合ソースのテーブルのキー数値を渡しています。
リスト外入力時に、数値を渡していた場所にリスト外入力を表す数値、
別フィールドにコンボボックスに打ち込んだ内容を渡したいのですが
方法がわかりません。
よろしくお願いします。
501名無しさん@そうだ選挙にいこう:02/12/20 12:37

リスト外入力のイベントがあったはず。

NotInList イベント だね。
503500:02/12/20 14:08
状況をちゃんと説明していなくてすみませんでした。
コンボボックスからは通常は数値を渡しているからだと思いますが
リスト外入力時イベントでコンボボックスの中身を渡そうとすると
打ち込んだ内容ではなく"0"を渡してしまいます
(数値を渡すべきところにリスト外入力を表す数値はちゃんとできました)。
これを"0"ではなくテキスト打ちした内容が反映されるようにしたいのですが
何をすればよいのでしょう?
NotInListイベントにこのように書いてます。

Dim nolst As Variant

nolst = Me!(コンボ名)
Me!(テキスト渡し先) = nolst

Me!(数値渡し先) = (リスト外入力の時の数値)
End Sub

よろしくお願いします。
>>503

Dim strExcept As String

strExcept = Me.コンボ名.Text
Me.テキスト渡し先.Value = strExcept

Me.数値渡し先.Value = リスト外入力の時の数値
505500:02/12/20 15:06
>>504
ありがとうございます。コンボにTextプロパティがあったんですね。
勉強してがんがります。
506名無しさん@そうだ選挙にいこう:02/12/20 15:12
アクセス2Kを使ってます。
テーブルないで計算をするにはどうすればいいのでしょうか?
よろしくお願いします。
>>506
できない。クエリやフォームを使う。
テーブルの役割はデータを格納することだけ。
>>506
質問以前に、小学生並みの稚拙な表現は何とかなりませんか?
>>508
リアル消防だったらごめんなさい!
(フォローになってないかも・・・?)
     __,,,,... -―‐-、__
=ニ_" ̄-...._,二   ,,..=''"   ""''=-、_
  ~~'''''‐、_ ''=;;;>ー`'―――--、    ヽ、     ノ ̄ ̄ ̄ ̄ ̄ヽ
       `/         ヽ ヽ‐-、  ヽ   /  .る る と  |
       |エ`l  =''''エヱ,'' ‐/ /\    .l   l.  る る う  〈
       /(・)`|   /(・)  >  ヽ    \|   |.  る る お  〉
       /〈  ̄ "'  ,`ー- ' i   /\    |   〉  .る る る   |
.      l::::ヽ___ヽ  。゚ , ' l  ヽ__  /   〈   る る る  |
      |::::::r〜‐、     /     ,r、`i/    l.  る る る  〈
.       |::::::))ニゝ     /     2り /    _ノ     る る  ,〉
       |::::(_,,   /     (_/|-=二__        る  /
      !::  ""        / 入. |        \____/
       `ヽ、__,,,,........,,,,_/ / || |l|
.          〕;;;;;;;;;;:::::=''" _/||  ||/ |
       _|| ̄|| ̄|| ̄ ||.  ||,/|| ヽ
    '" ̄  ||  ||  ||   || /|    \
         `ー---‐―'''"~
511名無しさん@そうだ選挙にいこう:02/12/20 15:59
WIn98,Access2000を使っています。
2つの異なるテーブルに含まれているデータ(5000件位で、数字、文字含む)が、完全に
一致しているか調べたいと思いますが何かいい方法はありませんでしょうか。
よろしくご指導の程お願いします。
512名無しさん@そうだ選挙にいこう:02/12/20 16:20
思うようにアクセスのファイルができないのですが
アクセスのお勉強サイトで完成したアクセスのファイルを
DLできるサイトってありますか?

完成したファイルの内容をみたいのです。
よろしくお願いします。
>512
サンプルでNorthwind.mdbとかない?
インストールしたフォルダ\Office\Samplesにあるよ。
514名無しさん@そうだ選挙にいこう:02/12/20 16:51
レポートで、=Sum([価格])を使って価格の合計を出したいのですが
印刷プレビューすると#Error が出てしまいます。

こういうときって、どこがおかしいのでしょうか?
>>514

> レポートで、=Sum([価格])を使って価格の合計を出したいのですが
> 印刷プレビューすると#Error が出てしまいます。

憶測だが、レコードソースのフィールド名にも、コントロール名にも[価格]が、あり、
同名のため、どちらを指しているのか一意に判断できない状態と思われ。
コントロール名を[txtKakaku]とでも変更すると吉。
>>514
> レポートで、=Sum([価格])
これを何処に書いてますか?
まさか「詳細」に書いてないよね!
517名無しさん@そうだ選挙にいこう:02/12/21 17:24
>>511
大丈夫、完全に一致しています!
518名無しさん@そうだ選挙にいこう:02/12/21 18:34
>>511
不一致クエリーウィザードで、不一致クエリーを作って調べてる方法があります。
原理は簡単です。テーブルAにテーブルBを全項目で外部結合し、結合できないレコードの存在有無を確認。
今度はテーブルAとBを入れ替えて、同様に確認。
結合できなかったレコードが無ければ、両方のテーブルは一致している事になります。
519名無しさん@そうだ選挙にいこう:02/12/21 22:19
>517
ワラタ!!
520氏ね:02/12/21 22:25
521名無しさん@そうだ選挙にいこう:02/12/23 00:15
賢明なる諸兄方に御質問させて頂きます。

メールフォームにて発せられたメールより情報を取得し
即座に項目と対応するアクセスのフォームへその情報を
入れることは可能でしょうか。また、その手段があれば
何卒、御教授御願い致します。
OSはWindows2000 Access2000を使用しております。

フォームより送られてくるメールの内容は

name = TEST
size = 10
email = [email protected]
配信 = 希望しない

と云う具合です。それぞれを現在表示しているレコードの
対応するフォームへ、ボタンをクリックすれば即座に入力
が出来る様にしたいと考えております。

素人考えで、メールをすべてコピーした上、クリップボード上の
データを抽出等して…となるのだろうか、と考えたものの、実現
する術も技も持ち合わせておらず、徒に時間を費やすのみでした。

何分アクセスなるソフトやVBA等、使用した経験がなく、現在手探り
ながら学んでいる最中であり、発言が抽象的になってしまい申し訳御座いません。
どうか皆様、宜しくおながい致します。
522名無しさん@そうだ選挙にいこう:02/12/23 00:49
メール=テキストファイルでよろしいでしょうか?
テキストファイルならば、フォーマットを決めて、テーブルに読み込む処理をVBAで書けばよろしいと思います。
ただし、メーラーからテキストに落とす処理は手作業になると思います。
メールが500通、1000通となるとあまり現実的ではないような気がします。
エクスチェンジサーバーやアウトルックを使うのであれば、もっと別の良い方法もあるかも知れません。
ノーツを使うのもよいかも知れません。
>>521
メーラーがOutlookならOutlookVBAで取得できるかもしれないけど、
今時、Outlookなんてウンコメーラー、誰も使ってやしないだろうから、この策は無し。

つか、普通にフォーム作って、メールからフォームのテキストボックスにその
>name = TEST
>size = 10
>email = [email protected]
>配信 = 希望しない
をコピペして、「= 」以降を抽出し、DBに挿入するコード書くだけでしょ。
改行は「vbcrlf」、文字の位置検索は「Instr」をヘルプでチェックしる。
524名無しさん@そうだ選挙にいこう:02/12/24 09:23
Win2k Office2kをつかてます。
レポートのウィザードを利用して、レポートを作成するのですが
グループフッターが表示されません。

グループヘッダーは出るのですが、どうやったら
グループフッターを表示することができるのでしょうか?
よろしくお願いします。
>>525
・そのレポートをデザインモードで開く
・マウスの右ボタンをクリックしてボップアップメニューを開く
・並べ替え/グループ化の設定(S)を選択
・グループ化フィールド毎にヘッダー/フッターの設定

以上。OK?
>>524
ウィザードの「グループレベルを指定してください」の段階で
指定する。
もしくは、レポートデザインでメニューの「表示」から
「並び替え/グループ化の設定」で設定する。
527しまった:02/12/24 09:36
>>525のポインタは>>524だね

# 何を朝っぱらからボケてる>俺
>>525-527 できますた。 ありがとうございますたm(__)m
529511:02/12/24 10:49
518さん
レス有難うございました。
早速、試してみます。感謝、感謝。
530名無しさん@そうだ選挙にいこう:02/12/24 11:31
すみませんが、教えていただけないでしょうか?

帳票フォームで、複数のデータを(shiftキーでまとめてまたは、ctrlキーで飛び飛び)選択した後、
個々のデータのテキストボックスに同じ値をまとめて入れたいと思っております。

帳票フォームのマウスボタン開放時とキー開放時イベント 、帳票フォーム上
の全てのコントロールのフォーカス取得時イベント
をどのように記述すればよろしいでしょうか?

お手数ですが、よろしくお願いいたします。

WinNT4.0/AC97です
>>530
不可能と断言まではできないが、たぶん、むずかしい。
チェックボックスを使って、処理対象のレコードを選ばせる方法が現実的。
>530
帳票フォームを使いたいなら、531の方法が吉。
リストボックスでやるなら、複数選択できます。
飛び飛びでも、Shiftでまとめて選択でも出来ます。
533名無しさん@そうだ選挙にいこう:02/12/24 13:23
>>522 >>553
御礼が遅くなり申し訳ありません。なんとか実現の目処が付きました。
大変感謝しております。有難う御座いました。
534名無しさん@そうだ選挙にいこう:02/12/24 14:08
メールの扱いはbasp21.dllを使えば簡単にできるのだが
ttp://www.hi-ho.ne.jp/babaq/basp21.html

>>533は、どんな方法で実現したの?
535530:02/12/24 14:35
>>531
>>532
ありがとうございました。
参考にさせて頂きます。
チェックボックスorリストボックスを用いてみようと思います。

MSのサイトを探していましたら、このようなものが見つかりました。
http://support.microsoft.com/default.aspx?scid=kb;ja;JP407904
ただ、この方法だと、飛び飛びでは選択できそうにないようです。
536532:02/12/24 15:01
>535
リストボックスなら、複数でも一つでも選択したデータを
ItemsSelectedプロパティで取得できるんだなー。

私はいつも大体こんな感じにしてます↓
(テストして無いから違ってるかも。)
-----------------------------------------------------------------
Dim Db As Database, Dim As Recordset
Dim ObjData As Variant

Set Db = CurrentDb()
Set Rs = Db.OpenRecordset("データを入れたいテーブル名", dbOpenDynaset)

With Rs
For Each ObjData In Me!リストボックス名.ItemsSelected
.AddNew
Rs = Me!リストボックス名.Column(列数, ObjData)
.Update
Next ObjData
.Close
End With

Set Rs = Nothing
Set Db = Nothing
-----------------------------------------------------------------
537532:02/12/24 15:03
536の追加。536の方法なら飛び飛び選択でもOKなのだー。
538名無しさん@そうだ選挙にいこう:02/12/24 15:55
Access2kを使ってます。
クエリで「 合計: [単価]*(1-[割引])*[数量] 」としたのですが
合計のところで、通貨型として出力されません。

計算はあってます。テーブルも通貨型になってるのですが
どうしてでしょうか? よろしくお願いします。
>>538
レポートなりフォームなりで表示するときの書式を設定すれば
よいのでは?
どーしてもというなら当該フィールドプロパティで「書式」を「通貨」に
すればクエリでも\マーク付きで表示は可能
540530:02/12/24 16:11
>>532
詳しいソースを提示してくださってありがとうございます。
じっくり読んで理解したいと思います。
大変お世話になりました。
541_:02/12/24 16:15
542名無しさん@そうだ選挙にいこう:02/12/24 18:26
初歩的な質問ですが、アクセス97で住所入力支援機能は
使えないのでしょうか?
あの郵便番号を入れると住所が自動で出てくるやつなんですが、、、

>>542
それはIMEなり、ATOKなりのシステムでは?
ATOKでは郵便番号入れてF3キーで住所に変わるが。
Access97使ってます。
フォーム作って、TABキーでテキストボックスにフォーカスを移した場合、
自動的に選択状態になりますが、これを無くして文章の末尾にカーソルを持ってきたいのです。
良い方法あれば教えてください。
545542:02/12/24 18:57
>>543
ということは、、、、MSのサイトでIME用のなんか
そういうやつをダウンしてくればいいんですかね?
>>545
癪だが、今MS-IME見てみたらプロパティの中に郵便番号辞書ってのがあるじゃねーの。
これチェック入れて、郵便番号変換してみ。
>542
IME97でどうだったかおぼえてないんだけどIME2000だと郵便番号辞書があるね。
で、Access97からAccess2000になったとき住所入力支援が付いた。
Access97で作ってたときに「郵便番号から住所を調べて貼りつける」ってのを
作ったら半年ぐらいで2000がでて、作ら無くてもよかったなあと思った覚えがある。
で、解決策としてはMSでIME97用の郵便番号辞書が落とせないか見て、
無ければ、ATOK買うかAccessを新しいのに変えるか。予算がでないなら
郵政省のページでCSVが落とせるからそれをもとに辞書かAccessのフォームを作る。

>544
2000しか手元にないけど、オプション-キーボード-フィールド移動時の動作
で設定できる。97にも同じようなところにあったような気がするよ。
548542:02/12/24 20:11
>>547
それです。アクセスの2000とかXP使っている方は分かると思う
のですが、テーブルとかをデザインビューで開いた時に、
フィールドのプロパティに出てくる、<住所入力支援>というのが
今現在出てこないんです。
ちょっと質問のしかたが悪かったみたいです。
自分が使いたいのは、郵便番号フィールドにデータを入れると、
住所フィールドに住所が自動で入るという住所入力支援機能です。
IMEは98を使っていて、さっき見たらIME98用の郵便番号辞書が
落とせるようになっていたの落としてみます。
549名無しさん@そうだ選挙にいこう:02/12/25 08:43
>>542
私の場合、郵便番号から住所取り出すVBA作っています
メリットは、最新の住所に対応できること
デメリットは、元データの郵便番号および住所のデータ量が大きい
ただ、○○県だけとか地域限定だと便利かもしれません
ご要望があれば、VBAを書き込みます
550名無しさん@そうだ選挙にいこう:02/12/25 09:29
Access2kを使ってます。レポートで、グループヘッダーなどに
商品名、数量、金額などのラベルやテキストボックスがあるのですが
まっすぐにそろわず、イライラします。

一括で、ラベルなどを簡単に、きれいに並べる方法ってありますか?
よろしくお願いします。
551名無しさん@そうだ選挙にいこう:02/12/25 09:38
>>550
複数選択しておいて
「書式設定」→「配置」とか「左右の間隔」・「上下の間隔」
あるいは
右クリ→プロパティ→左位置(上位置)をさわる
>544
そのテキストボックスだけカーソルを末尾にセットしたいなら、
フォーカス取得時のイベントプロシージャで

Me.テキストボックス.SelStart = LenB(Me.テキストボックス)
553名無しさん@そうだ選挙にいこう:02/12/25 10:13
Meってなに?windowsのこと?
>>553
報知
>>554
同意
556_:02/12/25 10:54
557名無しさん@そうだ選挙にいこう:02/12/25 21:25
>>554-555
してねぇって (w
>>557
いいところに気が付いたな。
559名無しさん@そうだ選挙にいこう:02/12/26 00:05
>>534
なんだこりゃ…すげぇ便利だ…
良いもの教えてくれてありがd
560名無しさん@そうだ選挙にいこう:02/12/26 07:36
質問です。ADPでフォーム上のテキストボックスにレコード件数を表示したいのですが、
方法はありますか?
MDBであれば、=Count(*) で問題なかったのですが、ADPだとエラーになってしまいます。
=Countだと、数値は表示されますが、実際の件数より大きな値になります。
以前も質問したのですが、未だに簡単な方法が見つかりません。どうぞよろしくお願いします。
>>560
ADOかDAOの
 Recordset.RecordCount
じゃだめなの?
562名無しさん@そうだ選挙にいこう:02/12/26 13:22
Access2kを使っています。
ピボットテーブルで表を作ろうと思っていますが
<表示>から<デザインビュー>、<データシートビュー>はあるのですが
<ピボットテーブルビュー>がありません。

どうやったら、ピボットテーブルを使えるのでしょうか?
よろしくお願いします。
>562
なぜピポットテーブルが使いたいのか良くわからんが・・・
フォーム→新規作成
の中にない?
564562:02/12/26 14:03
ありがとうございます。
フォーム→新規作成でできますが
本に載ってる画像では、ピボットテーブルのところに
「+」、「−」プラスマイナスのボタンがあったりと
若干見た目が違います。

2kから2k2で、変わったのでしょうか?
>>564
2002からの機能です
566名無しさん@そうだ選挙にいこう:02/12/27 11:00
ACCESS2000ですが
クエリで複数のフィールドの条件に全て一致したレコードのみ抽出するということは出来るでしょうか?

例えば、<前月残高><今月入金><今月売上>の3つ全ての値が
1以上であるレコードのみ呼び出す場合など。
567566:02/12/27 11:02
あと、逆に3つ全てが0である場合は呼び出さない、など出来るでしょうか?
568549:02/12/27 11:04
お節介ですが、住所を出力するVBAをまとめてみました
ほかにも色々、応用できると思います。チェックデジットとか・・・etc。

テーブル(データ)の準備
tbl郵便番号と言う名前で住所のデータを準備します
郵政省でcsvを手に入れてください
郵便番号5桁のOcode、7桁のNcodeにインデックスを付けてやります
雷のマークをクリックしてOcode、Ncodeを指定してください
つづく
>>566
Accessの機能としては可能だが、お前のスキルで出来るかどうかは別問題。
つーか、可能かどうか、常識でわかりそうなもんだ。

WHERE句のOR条件をサポートしない商用RDBMSがこの世に存在するのかと、
小一時間(略)
570549:02/12/27 11:05
つづき
#モジュールの作成(適当に名前を付けて保存してください)

Function Post2Addr(str本人郵便番号 As String) As String
Dim dbs As Database
Dim rds As Recordset
Set dbs = CurrentDb
Set rds = dbs.OpenRecordset("tbl郵便番号", dbOpenTable)
With rds
If Len(str本人郵便番号) > 5 Then
.Index = "NCode"
Else
.Index = "OCode"
End If
.Seek "=", str本人郵便番号
If .NoMatch Then
MsgBox "そんな郵便番号はない!→" & str本人郵便番号
Post2Addr = "郵便番号不明の住所です"
'MsgBox "住所検索を起動します!", , "処理重いけど"
'DoCmd.OpenForm "F_住所検索"
Else
Post2Addr = ![Ken] & ![City] & ![Town]
End If
End With
rds.close
End Function
571549:02/12/27 11:06
つづき
#入力フォームの作成
テキストボックスで、本人郵便番号と本人住所を作ってください
本人郵便番号のイベントに下記のイベントプロシージャを入れてください
更新後処理
Private Sub 本人郵便番号_AfterUpdate()
Dim strAddress1 As String
strAddress1 = Post2Addr(Me!本人郵便番号)
If Nz(Me!本人住所) = "" Then
Me!本人住所 = strAddress1
End If
End Sub
フォーカス取得時
Private Sub 本人郵便番号_Enter()
Me!本人郵便番号 = Null
Me!本人住所 = Null
End Sub
572566:02/12/27 11:08
可能であることはわかっています。
やりかたを教えてください。
>>569
いいかげん痛い返し方はやめろと小一時間(略
>566
それはクエリのふつーのきのー。
簡単そうなAccessの本買ってきてひととおり目を通してみたら?

1.テーブルを元にしてクエリを作る
2.フィールド全部選ぶ。
3.前月残高の抽出条件に「>=1」と入力。今月入金、今月売上も同様に。

これで>566ができる。>567は「<>0」。
575566:02/12/27 11:24
>>574
ありがとうございます。
ただ
>>567は「<>0」。
なんですが、
これでやると3つ全ての値が0以上であるレコードのみしか呼び出されないんです。

やりたいのは、3つのフィールド全てが0であるレコードだけ呼び出さないということ。
3つ中2つまでは0が入っていることを許可したいんですが、
これってやっぱり難しいんでしょうか?
>>566
>>574が書いているように、入門書を買うか、初心者HPを見ることを推奨します
教えて君では君が成長しないと思われ。
577名無しさん@そうだ選挙にいこう:02/12/27 11:40
質問です。Win2Kでaccess2k使ってます。

単票フォームの更新前イベントで更新前の確認をしています。
一応動いてはいるのですが、キャンセルを選んだときに
「DoMenuItemアクションの実行はキャンセルされました。」
というメッセージが出てしまいます。

ネットで
Cancel = Trueでイベントの発生元となった操作を取り消すことができる。
これではメッセージは消えないのでしょうか?
どなたか教えてください。
578566:02/12/27 11:42
それくらいのことはとうに実践してるんですが
該当する部分がどうしても、どこにもありません・・。

教えて君を承知でお尋ねします。
579577:02/12/27 11:46
プロシージャは以下の通りです。
-----------------------------------------------------------
Private Sub Form_BeforeUpdate(Cancel As Integer)

Dim Res As Integer
Beep
Res = MsgBox("更新しますか?", vbOKCancel + vbQuestion + vbDefaultButton1, "更新")
If Res <> vbOK Then
Cancel = True
MsgBox "キャンセルしました。"
Exit Sub

End If
Exit Sub
End Sub
-----------------------------------------------------------
Private Sub 更新_Click()

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
MsgBox "更新しました。"

End Sub
>>566
余計なことかも知れないが、
テーブルの構造自体が厨房的ではないのか?
Excelみたいに作ってないよね?
>>578 ヒント
>=1
>=1
>=1
これで分かるかな?
>>581
記号の意味がわかりません。(数学が苦手なもので)
本人じゃないだろうと思うけど…
>=1 >=1 >=1 じゃなく
>=1
→ >=1
→ → >=1
これではどう?
584566:02/12/27 12:01
にほんごがわかりません
585566:02/12/27 12:01
いみがわかりません
586名無しさん@そうだ選挙にいこう:02/12/27 12:10
面白い
分かる人には分かるよ(w
588566:02/12/27 12:22
分かりました。
可哀相なので答え書いてあげてもいいですか?
590名無しさん@そうだ選挙にいこう:02/12/27 12:38
>>588
よかったね
で、どんな風に解釈したの?
SELECT T1.F1, T1.F2, T1.F3
FROM T1
WHERE (((T1.F1)>=1)) OR (((T1.F2)>=1)) OR (((T1.F3)>=1));
>>590
メール欄をよくみて見れ!
593566:02/12/27 13:00
ここの人達にはわからないようなので他いきます
594名無しさん@そうだ選挙にいこう:02/12/27 13:04
>>593
自分で考えれない香具師は、どこ行っても無理 
595566:02/12/27 13:06
 
ネタ質問にマジレスするスレはここですか?
597566:02/12/27 13:11
ここは悪いインターネットですね
>>566
>>591に答えが書いてあるだろう
それも分からないのか?
クエリーを新規作成して、SQLビューにしてから>>591を貼り付けて見ろ
で、マジレスしたのは
>>591ということでよろしいか
結論:566はPC初心者板へ
601591:02/12/27 13:16
せっかく教えてあげたのに(T.T )( T.T)
もう本物の566はいないと見た!
603ネタにマジレス:02/12/27 15:23
>>581

左オペランドはないのですか?
>>603
カコワルイ
605名無しさん@そうだ選挙にいこう:02/12/28 08:06
>>605
くやしいがわずかにワロタ
607名無しさん@そうだ選挙にいこう:02/12/29 23:11
質問です。win2000でaccess2000を使ってます。
サブフォームを使ったフォームで,サブフォームから親フォームの
コントロールを指定する方法を教えてください。
現在は,サブフォームのコントロールの中で
forms!"親フォームの名前".form!"親フォームのコントロールの名前"
といった風に親フォームを実値で指定しているのですが,
自分でも馬鹿な記述だと思うので,教えてほしいです。
608名無しさん@そうだ選挙にいこう:02/12/30 23:00
親だけにParentはどうよ
609名無しさん@そうだ選挙にいこう:02/12/30 23:30
>>607
その方法以外には無いと思います。
コードの記述が長すぎていやなら、WITHを使ってみては?このくらいしかないです。
>>607
608さんに一票。
親/子までの2段なら Me.Parent.コントロール名 の相対指定でいけるよね。
ただし、親/子/孫みたいな多段の場合は Forms!〜 の絶対指定だろうけど。
>>607さん
以下、ヘルプより引用
> たとえば、[受注明細] というサブフォームをフォームとレポートの両方に挿入した場合は、
> Parent プロパティを次のような式の中で使います。この式では、メイン フォームとレポートの
> [受注コード] が参照されます。この式は、サブフォームの連結コントロールに入力できます。
>
> =Parent!受注コード
612609:02/12/30 23:57
そんなのあったんですね。
勉強になりました。
あっ、Parentの補足ね。
Parentで参照指定できるのは 親/子 の入れ子構造の場合はOK。
親から OpenForm による外部呼び出しした子供からは参照エラー
になるのでNG。(と言う事はフォームが親子関係になっていない)
ちなみに、親/子/孫の多段入れ子構造(こんなの使う場面があるか
は別として)の場合は Me.Parent.Parent.Name のような形式で
孫から(子を飛ばして)親を参照することも可能でしたん。
614609:02/12/31 00:19
cousn とかuncle とか aunt とかは無いのですか?
ちなみに私は「従兄弟のビニー」がお気に入りです。
Access2000で
「筆まめ」などのはがき作成ソフトから簡単に変換する方法あります?
まあ、Accessでなくても検索とか抽出とかできるんだけど…
単純なインターフェイスで検索できるやつを作ろうかと思いまして…
VBでの方法でもいいので教えてください。

ん?スレ違い?(^^;スマソ
616607:02/12/31 08:41
>>608>>613
懸案がひとつ消えてうれしいです。ありがとう。
>>614
つまらん。
質問内容がおバカな奴は、ネタのセンスもゼロだな。
>>615
筆まめからCSV出力保存してAccessからインポートって出来ない?
619名無しさん@そうだ選挙にいこう:02/12/31 15:23
>>613
>Me.Parent.Parent.Name のような形式で
Parentが多重できるとは初めて知った。サンクス。

迂闊に使いすぎると、あとで何を指してるか解らなくなるな。
620名無しさん@そうだ選挙にいこう:03/01/02 23:21
Access 2002 を勉強中です。

で、本で isNull 関数が出てきたので、ヘルプを調べていたんですが、
そこで、以下のようにかかれていました。


IsNull 関数

式に Null 値が含まれているかどうかを調べ、
結果をブール型 (Boolean) で返します。

構文
<省略>

解説
IsNull 関数は、引数 expression の値が Null 値である場合は、
真 (True) を返します。それ以外は偽 (False) を返します。
引数 expression が複数の変数で構成されている場合、
変数が 1 つでも Null 値のときには式全体が Null 値となり、
真 (True) が返されます。

<省略>

重要
IsNull 関数を使用すると、式に Null 値が含まれているかどうかを
調べることができます。If Var = Null や If Var <> Null のように
他の状況では真 (True) と評価される式でも、偽 (False) になります。
これは、Null 値を含む式はすべて式自体が Null 値となり、
偽 (False) と評価されるためです。
621名無しさん@そうだ選挙にいこう:03/01/02 23:24
それでわからないんですが、
このヘルプの「解説」に書かれている
> 引数 expression が複数の変数で構成されている場合、
> 変数が 1 つでも Null 値のときには式全体が Null 値となり、
> 真 (True) が返されます。
と、「重要」で書かれている
> If Var = Null や If Var <> Null のように
> 他の状況では真 (True) と評価される式でも、偽 (False) になります。
> これは、Null 値を含む式はすべて式自体が Null 値となり、
> 偽 (False) と評価されるためです。
がどう違うのかわからないんです。
教えて頂けませんか?

622名無しさん@そうだ選挙にいこう:03/01/02 23:34
>>621
練習問題
1)1 + Null
2)1 = Nullは? True? False?
なんかわからないけど、Nullが絡むと答えはNull
あんまり、一字一句追わずにやりすごしましょ。
IsNullは値がNullかどうかのチェック関数ってだけ。
623620:03/01/02 23:44
1) は、True
2) は、False
ですか・・・・?

624名無しさん@そうだ選挙にいこう:03/01/02 23:55
Accessのコードの画面で
表示=>イミデュエートウィンドウ とかお試し計算ができるはず。
1) Null 2) Null です。
答えは常にNull
「変数が 1 つでも Null 値のときには式全体が Null 値」
でしょ?
625620:03/01/03 00:09
>>624
> 「変数が 1 つでも Null 値のときには式全体が Null 値」
> でしょ?
そうですね。

どうしても、
> If Var = Null や If Var <> Null のように
> 他の状況では真 (True) と評価される式でも、偽 (False) になります。
> これは、Null 値を含む式はすべて式自体が Null 値となり、
> 偽 (False) と評価されるためです。
が気になるのですが、
とりあえず気にしないことにします。

そのうちわかるときがくるでしょう・・・・・。

ありがとうございました。
脳内補完するとこんな感じ?

変数Varと値Aがあり、VarはAであるとします。
このとき当然ながら<If Var = A>は真です。
今度は、VarはAでないとします。
このとき当然ながら<If Var <> A>は真です。

次に、変数VarはNullであるとします。
このとき<If Var = Null>は真...ではありません!
今度は、変数VarはNullではないとします。
このとき<If Var <> Null>は真...ではありません!

びっくり!

このように、<If 変数=値>や<If 変数<>値>などのように、
他の状況(比較対照がNullではない通常の値の場合)ならば
真と評価されるはずの式でも、比較対照が Null になったと
たんに偽になります。
これは、Null 値を含む式はすべて式自体が Null 値となり、
偽と評価されるためです。

故に、IsNull関数を使用する必要がでてくるのです。

IsNull関数においては、
> 引数 expression が複数の変数で構成されている場合、
> 変数が 1 つでも Null 値のときには式全体が Null 値となり、
> 真 (True) が返されます。
云々。

やっぱわかりにくいか。ごめりんこ。
VB厨の意見だが、変数hogeが""かNullか判断する時に便利な方法。

If Len(Trim(hoge & " ")) = 0 Then

一文字でも文字列とくっつけるとNullは効果を失い、文字列として判断される。
それを0文字かどうかチェックする。
hogeがNullであれ、文字列であれ、エラーは出ない。
>>627
文字列の場合ね。

ちなみに、その件は文字列連結演算子&の仕様としてヘルプに明記されているのだが、
VBをバリバリに使いこなせる人でも、意外に知らない人が多い・・・。
629620:03/01/03 11:20
みなさん、ありがとうございます。
朝起きて考えたらわかったような気がします。

1)1 + Null
2)1 = Null
ともに、NullでTrueですね。
> If Var = Null や If Var <> Null
では、 Var = Null も Var <> Null も
NullでTrueだけど、
IF Null では、式の評価ができないので、
> If Var = Null や If Var <> Null
も Falseになっちゃうってことかな
っておもいました。

どうでしょうか?
>>629
お前本当に頭悪いな。ヘルプを255回読み直した方がいいぞ。
(ふつうは一度読めばわかることなんだが)
631620:03/01/03 11:51
はい、どうしようもないあほだって、
みんなから言われてます。

それでもなんとかがんばってるんですが
やっぱり変ですかね?

ごめんなさい。
>>627
> 変数hogeが""かNullか判断する時に便利な方法。
> If Len(Trim(hoge & " ")) = 0 Then
これだと変数hogeが""でもNullでも0になるから判別できないと思う。
hogeがNullでも""でもとにかく""として取扱いたい場合はいいかもしれない。
いずれにしてもTrimは不要なような気がする。
ちなみにAccessだとNz関数をつかうところかな。
>>632

>>628
に書いてある通り、文字列の場合なら有効な方法。文字列限定なら、
わざわざNz関数を使うことはない。
文字列かどうかでわざわざ使い分けることはないんじゃないかと思う今日この頃。
DBからデータ抜くときのRecordsetの処理の

With Recordset
  strName = Trim(!氏名 & " ")
  strAddress = Trim(!住所 & " ")
End With

こんな時は役にたちますな。
Stringの変数にNull入れるとエラー出るから、チェック省ける。
>>635
反復回数が多いループ処理では、If分岐がなくて済む分処理が高速。
(1回だけの処理なら大差なし)
>>635じゃないけど、そう言ってんじゃん。
チェック省けるとか。
638620:03/01/03 21:06
昨日と今日は、選択クエリについて学習しました。
クロス集計クエリを知って、ちょっと感動しました。
>>638
ageで日記書くなボケ。
640名無しさん@そうだ選挙にいこう:03/01/03 21:36
1のような受注テーブルから、集計対象とする受注番号の開始番号をフォームで指定して、2.のような商品別の集計表をレポートで作成しようとしています。

1.【テーブル】受注データ
受注番号 商品コード 数量
1    001   1
1    002   2
2    001   3
3    002   1
3    003   2
4    001   1


2.【レポート】商品別集計表
対象受注番号 2−4
001   4
002   1
003   2

別途集計クエリー「集計Q」を作成してレコードソースにしています。
このレポートのレポートヘッダーに、対象受注番号を表示させたいと思い、
  select max(受注番号) as 最大受注番号 from 受注データ
のようなクエリー「最大Q」を作成しましたが、これで得られる受注番号の最大値をレポート上に表示させるにはどのようにすれば良いのでしょうか?単純に、テキストボックスを一つ作って、コントロールソースに、
  [最大Q]![最大受注番号]
とすれば良いのかなと思いやってみたのですが、実行すると「パラメータの入力」となってしまいました。
>>635
strName = Trim(!氏名 & " ")

strName = !氏名 & ""
でいいんじゃない? " "を足してTrimする必要はある?
処理速度を気にするならTrimも削りたいところだよね。
642名無しさん@そうだ選挙にいこう:03/01/04 21:55
お邪魔します。皆さんに教えていただきたいのですが、
WEB上のフォームから入力した文字列又は数値データをACCESS2000のテーブル
に取り込みたいのです。参考になる本などご紹介いただけないでしょうか?
お願いします。
643名無しさん@そうだ選挙にいこう:03/01/04 22:01
>>642
IISの本買え
644名無しさん@そうだ選挙にいこう:03/01/04 22:42
インデックスを設定すると検索や並べ替えは速くなります・・・
というようなことがヘルプには書かれているんですが
この「検索や並べ替え」ってのは、どこまで拡大解釈できるんでしょう。

たとえば、ですね。
1 か Nullか、みたいなフィールドがあったとします。
このうち 1 のものだけクエリで抜き出して何か処理する、というような場合、
このフィールドにインデックスを設定することに意味はあるんでしょうか。
「検索して抜き出す」と考えれば、処理もいくらか速くなりそうですが。
「検索や並べ替え」という表現の仕方からすると、何か違うんじゃないかという
気もします。
何というか
そもそも、Nullがあるようなフィールドでも、インデックスってのはちゃんと
働くんでしょうか。
いま作成中のDBで、もしかしたら自分はかなり多くの無意味なインデックスを
設定しているんじゃないかという気がして。
インデックスのために、別な方面で処理が遅くなったり、DBが無駄に大きく
なったり、というような話もきいたので、手直しするなら今のうちしかないと思い、
質問させていただきました。
>644
スジがいいな君
>>644
インデックスってのは本当に必要な所にだけ設定するもんだ。
刺すか刺されるか。そんな雰囲気が良いんじゃねぇか。

マジでいらん所に設定すると遅くなるぞ。
647620:03/01/04 23:26
今日は、アクションクエリについて学習しました。
個々の「テーブル作成」「追加」「削除」「更新」自体は
簡単で理解できました。

でも、サンプルで示されているような応用的なことは
すごく難しくて
かなり経験を積まないとだめだと感じました。

これからもがんばりたいと思います。
648名無しさん@そうだ選挙に行こう:03/01/05 00:27
>>644
すこし乱暴なやり方を照会します。
最初はインデックスを全く使用しないで作成して、
後から、「なんとなくここにインデックスはったらよさそうだなぁ〜」という項目にインデックスをはり、
動作速度を比べて見るんです。
どうでしょうか?
↑の方々
素早いアドバイス、有り難うございます

さっそく自宅にあるショボいPCで実験してみました(Pen250MHZ、RAM96MB)

6万レコード中、あるフィールドの値が1以外のものを抽出するクエリ。
データが表示されるまでにかかる時間はどちらも一瞬、測定不可能。
フィールドの値が、1とNullでも、1と0でも、結果はほぼ一緒。

これでは手応えがなさ過ぎるので、別な1万件ほどのデータを使って、
特定の文字列抽出をやってみました。
13桁商品コード、これは本来主キーなのですが、一方はその設定をはずし
ただの何でもないデータにしてしまいました。
この13桁コードの、頭の7桁プラス*、つまり、Like"-------*" の形の抽出ですね。
ここでようやく手応えといえるものがありました。
一方は1秒弱、一方は一瞬。
明らかに違いますが、正直、何だこんなもんかいといった感じでもあります。

次に、同じくワイルドカードつき検索語でフォームフィルター絞り込み。
約5千件のレコード(顧客データ中の住所フィールド)で実験しましたが、
どちらも一秒前後で、違いはまったく分かりませんでした

とても単純な実験ですが、これであっさり吹っ切れてしまいました。
>>647
マジウザい。
日記書くなって上の方で言われてただろうが。
>650
もう、諦めてスルーしようぜ。相手しなきゃ気にならん(´ー`)y-~~
まぁニラ茶でも飲めや〜。 旦~~旦~~旦~~
652名無しさん@そうだ選挙に行こう:03/01/05 21:31
>>649
チミはいいセンスしとるヨ!
Accessだけにとどまらず、いろいろ勉強してミソ!
データベースの王様オラクルの資格も良いかもしれんヨ
ただし、AccessはオラクルよりSQLの方が相性が良いけど。(SQLの資格は聞いたことありません)
653644=649:03/01/06 00:53
お褒めにあずかり恐縮です
オラクル、SQLサーバーはいくら何でも僕の手にはあまります。
時間も頭もありません(;´Д`)

本業は零細物販業でして、つくっているのは、持たされている支店の
DBなんです。
業者に頼む余裕がないので、こうして年末年始もAccessにかかりっきりに
なっています。
というか。
始まると面白すぎてやめられず、初売りの時も、売場にも出ないで
裏の事務所にこもっきりだったため、販売員たちの不審を買っています。

インデックスについては、大切なのは、適切な設定箇所を見抜く力と
いうよりは、天秤に掛けて見限る思い切りという気がしてきました。
いまつくっているDBを箇所別にいくつか見直してみましたが、大量データの
追加更新クエリとか、どう考えてもインデックスには足を引っ張られる
可能性のほうが高い箇所がかなりあります。
もしかしたら主キーだけでOKという場合のほうが圧倒的に多いのかもしれません。
大量データの並べ替えが入るところは設定したほうがよさそうですけど、
考えてみると、テーブルの「生の大量データ」を並べ替えるなんてことは、
うちの場合あまりありません。顧客別お買い上げ金額、みたいなのは、
テーブルのデータを並べ替えるわけじゃなく、クエリによる集計の結果だし。
不慣れながらたまにレコードセット開いてごちゃごちゃやるとき、
並び順が問題になるようなレコードセットは、そんなに大量じゃないことが多いし

・・・て、何だかこれも日記みたいになって来ちゃいましたね。
では。
どうも、今回は有り難うございました。
654名無しさん@そうだ選挙にいこう:03/01/06 16:40

こんにちは。ここに質問してよいのか分からないのですが
もし、ご存知の方がいらしたら教えてください。

WinXP Pro + MSDE で台帳の管理を行っています。
入出力はWeb,もしくはAccessのIFを使っています。

このSQLのデータベースに自宅からもアクセスをしたいのですが
何か方法がありますでしょうか?

会社のLAN環境の中で試したところ、Access上で隣のPCの
SQL(MSDE)に接続することはできました。
ADPはそれぞれのPC内に同じものを持ちました。共有するとR/Oになってしまったので。

環境はどちらもADSLです。
会社といっても、自営業程度なので、個人向けの8MのADSLを引いています。
(場所の都合上、会社は e-access、自宅は FLETSですが)

両方の環境で固定IPを取れば可能なのでしょうか?
それとも他にやりかたがあるのでしょうか?

よろしくおねがいします。









655名無しさん@そうだ選挙に行こう:03/01/06 20:45
>>653
浮いた存在にならないように注意してください。
周りの人に自分の仕事を理解してもらうことが大切だと思います。
また、最初のうちはバグを出しては駄目です。
理解が無い状態で、社内で他の人を巻き込んでシステムの動作実験をするような事にならないように十分に注意してください。
>>654
ネットワークは良く解りません。間に電話回線があっても、ピングが通れば大丈夫だと思います。
656名無しさん@そうだ選挙にいこう:03/01/06 20:53
DOS版のナイルを使っていました。Win版に移行しようとしましたがWin版は何故かうまく作動しませんでした。
それでアクセスならどうかなと思いました。しかしアクセスは難しいと聞いていたのでアプローチを使っています。
アクセス使うのに必要な学力はどの程度あればよいのでしょうか?
基本情報処理の資格とか必要なのでしょうか?(レベルとして)
>>656
データベースの概念が分かっていれば、学力など必要ない。
フォーム使うならWindowsのGUIの動作が分かっていれば尚良し。
Tabキー押して奇妙な所にカーソル逝った時のいらつきと言ったら。。。
658名無しさん@そうだ選挙にいこう:03/01/06 21:50
>>657 ありがとうございます。概念は理解しているつもりです。^_^; 
ナイルではマクロ命令を書かなくても簡単に一連の作業を構築することができたので重宝しました。
そういった自動実行機能と印刷フォームが細かく設定できるソフトを求めています。
アプローチは印刷フォームが今一みたいなのでアクセスのほうがいいのかななんて思っています。
自動実行+印刷フォーム この二つがポイントです。私の仕事に必要なのは。では真面目にアクセス購入考えてみます。
ご親切に感謝します。M(__)M
659名無しさん@そうだ選挙にいこう:03/01/06 21:55
>>658
ちゃんと勉強すれば十分にAccessを使えるレベルだと思うよ。
がんばってね。
>>654
双方固定IPでファイアウォールに相手限定の穴開けてやるのが
一番楽で確実なのは確か。ファイアウォールが信用できるなら
ターミナルサービス使えばXPの遠隔操作で結構早いらしいぞ。
賢い人はSSHとか使ってどこからでもアクセスできるようにするらしい。
でもISDNでナンバーディスプレイで自前のPPP張るほうが安心な気も。手間金食うけど。

詳しくは通信技術板かどっかで。
661654:03/01/06 23:00
>>660

ありがとうございます。
ノートンにIPの設定がありました。
これを利用して、かつユーザ設定をすればとりあえず2重にはなりますね。

実際の運用等は通信技術の方で聞いてみます。
ありがとうございました。
662名無しさん@そうだ選挙にいこう:03/01/07 00:34
なんだか高級な話題が続いてて、こんな厨房なこと聞くのも
大変申し訳ないのです。。。OS、OFFICEともに2000です。
コマンドボタンをクリックとすると、決められたテキストボックスの
中身をクリップボードにコピーが出来る、としたいです。
663名無しさん@そうだ選挙にいこう:03/01/07 06:25
テンプレート置いてあるサイトってありませんかぁ?
なんでもいいですので。
664名無しさん@そうだ選挙にいこう :03/01/07 08:46
Access2kをつかてます。
クリエのフィールドの項目のところで『右クリック→ビルド』を
したいのですが、メニューがすら出てきません。
私が作ったファイルは出てくるのですが、ロックされてるのでしょうか?

どうやったら、右クリックからメニューがでるようになるのでしょうか?

665名無しさん@そうだ選挙にいこう:03/01/07 09:07
>>664

クリエって何ですか?用語の簡単な意味と、できれば英語のスペルも教えてください。
>>664
1.ツールの「起動時の設定」のチェックを確認してみては?

2.自分が作ったmdbじゃなかったら作った本人に聞く

3.拡張子がmdeだったら無理…
667664:03/01/07 09:52
>>666
起動時の設定を見ましたが、そういう項目がありませんでした。
ファイルがmdbですが、作った人がもういないんです。
あー、困ったなー。ありがとうございました。
668666:03/01/07 10:21
>>667
3.は間違いでした。(やってみたら「右クリック→ビルド」がでた)

4.空のmdbを作って当該クエリをインポートしてみたらどう?
669名無しさん@そうだ選挙にいこう:03/01/07 10:46
クエリで1999/01/01から、2000/01/01を日付として
月数を求める計算式を教えてください。この場合12を出したいんです。

よろしくお願いします。
670名無しさん@そうだ選挙にいこう:03/01/07 10:55
アクセスで販売管理のDBを作っています。
請求書をレポートで出す際の質問です。
レポートを顧客マスターを基に作り、その顧客に対する受注明細を
サブフォーム上で列表示させて、
親レポート上ページヘッダーにその集計額を表示させています。

こうすると受注明細の数が多く、2ページに渡ってしまう顧客があった場合、
集計額は2ページともに表示されてしまいますよね。
これを2ページの場合は2ページ目にのみ、3ページの場合は3ページ目にのみ表示させたいのですが、
何かうまいほうほうは無いでしょうか?

親レポート名:請求書
サブフォーム名:明細
親レポート内集計額の入るテキストボックス名:請求総額
サブフォーム内集計の基になるテキストボックス名:明細小計

何か不足となる情報がありましたら随時埋め合わせます。
671名無しさん@そうだ選挙にいこう:03/01/07 11:30
>>670
集計額のコントロールソースに
=IIf([page]=[pages],[集計額],"")
でどうですか?
672名無しさん@そうだ選挙に行こう:03/01/07 12:36
>>670
レポートフッターに表示させるのはだめですか?
673名無しさん@そうだ選挙にいこう:03/01/07 13:28
>>671
670のような場合、[page]・[pages]・[集計額]に代入される値はそれぞれどうなるのでしょうか?
IIfの記述法がいまいちわかっていなくて・・・すみません。
674名無しさん@そうだ選挙にいこう:03/01/07 13:49
>>673
671じゃないけど。
=IIF([条件],[TRUEの場合],[FALSEの場合])

[page]=ページ
[pages]=総ページ数
[集計額]=集計額

現在のページが総ページ数と一致する場合に集計額を表示という意味。
675名無しさん@そうだ選挙にいこう:03/01/07 14:01
>>674
ありがとうございます。
ただ
それだとページ数と総ページ数がわかっている場合じゃないと
指定することが出来ませんよね。

連続して複数の顧客分を出力し、
顧客毎のページ数はまちまちなんですが
ページ数を自動で取得させるようなことは不可能ですか?
676名無しさん@そうだ選挙にいこう:03/01/07 14:06
>>675
いや、そういう意味じゃなくて。
[page]はそれ自体がページ数という意味で、
[pages]もそれ自体が総ページ数っていう意味。
だから、>>671さんの式をそのまま使えばOK。
677669:03/01/07 14:12
>>669←私にも教えてくださいm(__)m
678名無しさん@そうだ選挙にいこう:03/01/07 14:27
>>677
=DateDiff("m","1999/01/01","2000/01/01")
679677:03/01/07 14:58
>>678 ありがとうございました。やってみます。
680677:03/01/07 15:22
>>678 できますた! サソクス!
アクセス2kか、エクセル2kで横に並んでるデータを
縦に並べ替える方法を教えてください。
よろしくお願いします。
682名無しさん@そうだ選挙にいこう:03/01/07 15:33
>>681
Excel2K
行と列を入れ替えたい範囲を選択してコピー
ツールバーの[貼り付け]ボタンの▼を押して
行列を入れ替えるを選択。
683Word20000:03/01/07 15:35
Access2000を使っています。
レコードを更新したユーザまたはマシンをレコードに保存したいのです。
更新日なら=now()で簡単にできるのですが、ユーザ名やホスト名を
取得する方法がどうにもわからず行き詰まっております。
以前そういうデータベースを見たことがあるので、できるはずだと思うのですが。。。

どうぞよろしくお願いします。
>683
ホスト名はwinsockコントロールで取得するか、APIを使えば取得できる。
ユーざー名の取得はそういう画面設計をすれ ユーザ名入力させるとか

ttp://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9802/winsock/
685Word20000:03/01/07 15:45
>>684
ご親切にありがとう。精進いたします。
686名無しさん@そうだ選挙にいこう:03/01/07 15:53
>>683
API使えば可能。
ユーザーはGetUserNameA
マシンはGetComputerNameAを
それぞれ検索してみてください。
687名無しさん@そうだ選挙にいこう:03/01/07 19:20
テンプレート置いてあるサイトってありませんか?
なんでもいいですので。
>>687
マルチ。
レポートの質問です。
今使ってる表(現在は手書き)をAccessで自動化しようと思っています。
しかし、これが一枚目と、二枚目以降の様式が違っていて、
一枚目は上部に名前や住所を書く欄があったりで、表の部分は10行しか無く、
二枚目は全面、表で18行あります。

これを一つのテーブルに保存しているデータを印刷するレポートを作りたいのですが、
どのようにすれば良いのでしょうか。
690名無しさん@そうだ選挙に行こう:03/01/07 20:30
レポートヘッダーに氏名や住所をかく欄をつくります。
レポートヘッダーは1つのレポートの1ページ目にのみ印刷されます。
>>690
ありがと。
はっはーん、そんなのがあるんですね。
勉強になりますた。
692681:03/01/08 09:14
>>682 できますた ありがとう
693名無しさん@そうだ選挙にいこう:03/01/08 09:45
初心者VB厨です。質問おながいします。
非連結テキストボックスのChangeイベントで、そのテキストボックスに
文字が入っていたら適用ボタンのEnabledをTrueにする処理をしたいのですが、

Private Sub txtName_Change()
  
  If Len(Trim(txtName & "")) = 0 Then
    cmdApp.Enabled = True
  Else
    cmdApp.Enabled = False
  End If
  
End Sub

この時、ステップ実行して分かったのですがtxtNameに文字入れているのに
txtName.Value = 0として認識されてしまいます。.Textはきちんと文字数が出ます。
AccessのChangeイベントのValueって、Changeする前のデータでチェックするのでしょうか。
なぜかKey〜イベントも起こらないし、Accessではどういう処理をするのがベターなのですか?
よろしくおながいします。
694名無しさん@そうだ選挙にいこう:03/01/08 09:53
>>693
txtName.txt
>>694
txtName.Text ね。
FAQだな。
>>693
Changeイベントは一文字入れるたびに通るので、
AfterUpdateでも充分かと。
>>696
一概に言えないのでは?
1文字ごとにMSgBoxとかはマズイけど。(^^;
698693:03/01/08 11:03
皆さん、ありがとうございます。
さっきは簡易的にコードを書きましたが、実際は

Private Sub TextCheck()
  
  If Len(Trim(txtName1 & "")) = 0 Then
    If Len(Trim(txtName2 & "")) = 0 Then
      cmdApp.Enabled = True
      Exit Sub
    End If
  End If
  
  cmdApp.Enabled = False
  
End Sub

Private Sub TextName1_Change()
  Call TextCheck
End Sub

Private Sub TextName2_Change()
  Call TextCheck
End Sub

これでもまだ簡易的で、同様にして4つのテキストボックスをチェックしています。
Accessの.Textはフォーカスを持ったテキストボックスでないとエラー出ますよね。
AfterUpdateだと、フォーカス外す段階でチェックでしょう?
4つ目を入力した段階でボタンを使えるようにしたいのですが。。。
もう、まんどくせーので諦めてボタンのClickイベントでチェックしようと思います。
ありがとうございました。
699名無しさん@そうだ選挙にいこう:03/01/08 12:05
アクセス2銭です。
年度が表示するようにしたいので教えてください。
例えば、2002/4/1〜2003/3/31を2002年度とすると
2003/3/10を入力したところがあると、そこから
クエリの計算か何かで、別の列に2002と表示できるように
したいんです。 よろしくお願いします。
700名無しさん@そうだ選挙にいこう:03/01/08 12:49
>>697
結局>>693のモジュールでは、無駄にTextCheckをCallしてるようにみえるけど。
701名無しさん@そうだ選挙にいこう:03/01/08 13:13
>>699
日付のフィールドを[Date]とすると。
Year(DateAdd("m",-3,[Date]))
702桃花と直美:03/01/08 13:41
http://momolin.fc2web.com/
お疲れ様 気分転換にいろいろ探し物してみて
結婚相手を求めて相談所へ足を運んだのは過去の話、これからはネットで出会いを. . .
Helloからはじまる素敵な出会い体験してみて あなたの気持ちわかってあげる 私に教えてみて!
「結婚・出会い・メル友」「コミュニケーション」で探してね

上記のURLで開き難い時は
[yahoo] [infoseek] [google]にて「探し物 とくとく」で検索
タイトル「探し物とくとくページ」をクリックしてね きっと、あなたの欲しいもの見つかるはず

銀座de通販 あなたの探し物みつけて
保証付、ブランド品取り揃えています 送料無料 代引 
就職活動真っ最中のあなた、さあ自分を高く売ろう! 就職・転職、ビジネス紹介 
健康・美容、ファッション・アクセサリー、電話・通信、プロバイダ、食品関連、日用品、保険、旅行 
PC情報 ドメイン480円から取得、各種ネットショッピング 各種クレジット、ローン、キャッシング
懸賞・プレゼント・ポイントサービスなど 見逃せない情報満載 一度覗いてみて下さい

チョット秘密の部屋をのぞいてみて!ワクワクしちゃうから!待ってまーす。
あなたの心をキャッチできるかも・ウキウキ気分にしたってみてね   桃花
素敵なあなたとお話してみたい メル友しようよ 
無料登録から始めてみて 女の子も待ってます   直美
703名無しさん@そうだ選挙にいこう:03/01/08 16:04
レポートのヘッダーについて教えてください。

テーブルとして、会社CD,社員名,社員住所という3フィールドがあり、
レポートは会社CDでグループ化し、会社CD毎で改ページしてプリントしたいと考えています。
レポート上、てっぺんに会社CDを表示したいため、
 レポートヘッダー なし
 ページヘッダー  なし
 会社CDヘッダー 会社CD および ”社員名”,”社員住所”の見出し
 詳細         社員名,社員住所データ
  以下フッター   なし
としています。
すると、1レコードで改ページされてしまいました。レコード件数=ページ数です。
1ページに20明細(レコード)出力させるためには、どうしたら良いのでしょうか?

ページヘッダーに ”社員名”,”社員住所”の見出しを入れて、
会社CDをページヘッダーの上に持ってきたり、なんてヘッダーを逆転させることはできませんよねぇ・・・
704名無しさん@そうだ選挙にいこう :03/01/08 16:20
フォームに任意の数字などを入力し実行すると
レポートに入力されたものを出力させるには
どうやったらできるのか教えてください。
よろしくお願いします。
705名無しさん@そうだ選挙に行こう:03/01/08 16:22
>>703
間違って社員名でグループ化しているのではありませんか?
グループヘッダーはどのようになっていますか?
706名無しさん@そうだ選挙に行こう:03/01/08 16:23
>>704
日本語が変、
省略しすぎでわからない。
>>704
一案だが、TextBoxではなく、Labelを使用して、レポートのクラスモジュール内で、
Captionを書き換える。

Private Sub ○○_Format
  Me.Label1.Caption = "" & Forms("Form1").TextBox1.Value
End Sub

みたいな感じ。
708703:03/01/08 16:58
>>705
確かに社員名でソートかけてはいますが、グループ化は会社CDで行っています。
 グループヘッダー はい
 グループヘッダー はい
 グループごと    各値
 グループ間隔    1
 同一ページ印刷  しない  となっています。
709704:03/01/08 17:06
>>706ありがとうございました。
・フォームに数値を入力
・それを実行
・作成したレポートが立ち上がる
・見ると、そのレポートにフォームで
 指定した条件が入力されてる
・ニヤニヤ

>>707 ありがとうございました。
そのプログラムみたいな見たこと無いです。
ちょっとヒントください。
>>709
それを実行のそれとは?

データベースが既にあってフォーム上のテキストボックス「数値」を
入れるとデータベースの中でそれに該当するデータを抽出して
レポートに表示したいってことなの?
>709
・ニヤニヤがいいな。
単にフォームにをレポートに印字させたいのか
フィルタの条件にして、こういう条件ですよと印字させたいのかよくわからなくなってきたな。

入力したものを出すだけなら>707のでいい。(Labelでなくても非連結なTextBoxでいいと思うが)
フィルタの条件ならMe.filterで取り出せる。
>>711

> Labelでなくても非連結なTextBoxでいいと思うが

おっしゃる通りだが、Labelの方がリソースの消費が少ない?(検証したわけではないが)
ので、固定リテラルの出力なら、Labelの方がベターだと個人的には思っている。
713711:03/01/08 20:24
>712
あ、そこまで考えるなんて深いですね。ありがとうございました。
当方Access厨なんでアプリ自体がアレだし。
714名無しさん@そうだ選挙に行こう:03/01/08 21:34
>>708
どこかに誤りがあると思います。
試しに、目的のテーブルに対して、会社CD毎の社員数を求めるクエリーを作ってみて、
ちゃんと結果が出るだろうか試してみてください。
これで正しい結果が得られれば、テーブルには問題がないという事になります。
即ちレポートに問題があるという事になります。
レポートには単票、帳票と2種類くらいあると思いますが、帳票になっているでしょうか?
帳票になっているのなら、グループ化の指定方法に誤りがあるのかも知れません。
グループ化の指定は上から、最初に会社CD,次に社員名というような順番になっていますか?
もし、逆なら、社員名毎に改ページするかもしれません。
ここまでで、問題が無いのなら、見てみないと解りません。
考え方は正しいので、どこかに小さな勘違いが有るのかも知れません。
単純なテストデータをじぶんで作成して試行錯誤してみてください。
715704:03/01/09 08:42
おはようございます。 クエリで割り算をして
その余りを求める式を教えてください。
よろしくお願いします。
716名無しさん@そうだ選挙に行こう :03/01/09 08:57
年と月を入れると、1999/07/01のように
1日(ついたち)をつけて表示したいのですが
[年] & "/" & [月] & "/" & "01"
とすると、年と月が未記入のとき「//01」が
表示され困った、困った島倉千代子です。

どうすれば、//01を表示させないように
できるのでしょうか?
717>>716:03/01/09 10:11
IIFで消したら?
718703=708:03/01/09 10:29
>>714
クエリー作ってみましたが、OKです。
試しに、新しいレポートをウィザードから「帳票」を選んで作ってみたら
会社CD毎できちんと改ページされました。
どうも、最初に作ってたレポートが何かのタイミングで
「単票」になってしまったんだと思います。(チョト自信なし・・・)

ありがとうございました。

719716:03/01/09 10:46
>>717 ありがとうございました。
IIFの意味ぷーですが、やってみます。
わからなければ、また教えてください。
>>716
書式で yyyy/mm/"01" でいいのでは?
721716:03/01/09 11:19
>>720ありがとうございます。
yyyy/mm/"01" でできないんですができますか?

未登録の時01が残るような気がするんですが。
722716:03/01/09 11:34
クエリの計算で
年月日: [年] & "/" & [月] & "/" & "01" IIf ([年月日]=//01,"")
のようにIIF文を入力したんですが、構文がおかしいと言いがかりを・・。

式ビルダで式を2つ入力したいときは、どうすればいいのでしょうか?
よろしくお願いします。
>>722
IIf(IsNull([年]) Or IsNull([月]),"",[年] & "/" & [月] & "/" & "01")
724名無しさん@そうだ選挙にいこう:03/01/09 12:22
2つのサブレポートを表示するレポートをつくっていますが
一個目のサブレポートのレコード数を二個目のサブレポートで
Dcountを使って数えることができますか?
725722:03/01/09 13:17
>>723おお〜!かみさま〜!ありがとうございますた!
ちゃんとできますた!
726723:03/01/09 13:32
>>725
できたのいいがちゃんとIIfを理解してね。
「いいかがり」ではなく、いけないのは君なんだからね…
727名無しさん@そうだ選挙にいこう:03/01/09 13:41
アクセス97で作成したファイルを2kで読みこむと
右クリックでメニューがでてきませんでした。

コンバートする方法を教えてください。
よろしくお願いします。
>>727
読み込むとは?コンバートしたってこと?
修復してみればどうでしょう?

それでもダメならAccess2000で空mdbを作ってから
対象mdbからすべてをインポートしてみては?
729名無しさん@そうだ選挙にいこう:03/01/09 15:37
ACCESS2000を使っています。
フォームの非連結テキストボックスで条件を設定し
SQLで抽出しようとしています。
条件式をA〜DとするとWHERE句に
(A and B)or(C and D)と入れると正常に動くのですが
さらに条件式Eを加えようと
((A and B)or(C and D)) and E
とすると
「実行時エラー:演算子がありません」(エラーコード3075)
が出てしまいます。恐らくカッコの使い方が変なのだとは思いますが
どうすればエラーが出なくなるのでしょう?
教えて下さい。
730727:03/01/09 15:42
>>728 ありがとうございました。
実行モードになってたらしく、編集モードで起動したら
右クリックできました。すみませんでした。
731名無しさん@そうだ選挙にいこう:03/01/09 15:44
現在、Win2kで、Access2kを入れてますが
アクセス97をいれたいのです。

バージョンの違うオフィスを1台のPCに入れたいときに
上手に入れる方法があったら教えてください。
よろしくお願いします。
733731:03/01/09 16:06
>>732 ありがとうございました。
これから読ませていただきます。
734715:03/01/09 16:07
>>715の質問よろしくお願いします。
>>715 >>734
除算と剰余の求め方は知っている、という前提で、実現方法のみを提示。

演算対象のサイズが32bit(Long)以内なら、Mod演算子。
32bitを超える場合は、Fix関数を使用して工夫する。
736735:03/01/09 16:39
>>734 ありがとうございました。
Mod演算子は初耳ですが、がんがってみます。
>>734
A/Bの場合
=[A]-[A]*Fix([A]/[B])
738715:03/01/09 16:57
Mod ([金額]-[月数]*[月金額])
でエラーが出るんですが、すみませんが突っ込んでください。
サイトや本で、使用例が載ってなかったんで、よろよろです。
>>738
ヘルプを読むこと。
740729:03/01/09 17:00
再起動したら何故だかエラーが出なくなりました。
失礼しました。
741名無しさん@そうだ選挙にいこう:03/01/09 17:24
☆★☆★大人の玩具激安販売☆★☆★
♪新商品大量入荷♪
イスラエル軍が使用している【本物】ガスマスク販売中!!
ピンクローター 190円〜
スタンガン、催涙スプレー、ビデオ編集機(モザイク消し)、警棒
バイブ、医療器具、等等沢山あります!
http://www.king-one.com/
742困ったくん:03/01/09 20:31
Access97のパスワード解除の方法をご存知の方おられますか?
pocosoftさんが作られているようですが、応答がありません。
よろしくお願いします。
>>742
人の著作物を何だと思ってんだ。
犯罪を助長するようなことはできません。
>>742
パスワードをかけた本人に聞けやヴォケ
745名無しさん@そうだ選挙にいこう:03/01/10 09:22
Access97のファイルを2kに変換するときに
VBエディタで「デバッグ」→「ファイルのコンパイル」で
コンパイルするのですが、以下の内容で
『Option Compare Database
Option Explicit

Sub Form_Current()
If Me!年度 = Null Then
Me!明細作成.Enabled = False
Else
Me!明細作成.Enabled = True
End If
End Sub 』

「コンパイルエラー:Meキーワードの使用が不正です。」の
警告がでます。

 どうやったらいいのでしょうか。
よろしくお願いします。
>>745


> Sub Form_Current()
> If Me!年度 = Null Then
> Me!明細作成.Enabled = False
> Else
> Me!明細作成.Enabled = True
> End If
> End Sub

どうでもよいが、

Sub Form_Current()
  Me.明細作成.Enabled = Not (IsNull(Me.年度.Value))
End Sub

ではないのか?
747名無しさん@そうだ選挙にいこう:03/01/10 11:01
更新クエリと、マクロって動作的に違うものですか?
天然と、荒らしってネタ的に違うものですか?
749名無しさん@そうだ選挙にいこう:03/01/10 12:03
VBAとVBEは違うものでですか?
750名無しさん@そうだ選挙にいこう:03/01/10 12:10
>>746
????? はぁ?
751初心者くん:03/01/10 12:11
こんにちわわ。教えて下さい。
フォーム内のテキストボックスなどに文字列を入れる場合は

me!なまえ = "モナー"

ですが、フォーム内のチェックボックスにチェックする場合

me!チェックボックス = True 'Onとか-1とかでも駄目でした。

では「オブジェクトがメッソドでサポートを」とか言われました。
チェックボックスをOnにする方法を教えて下さい。

あと、
>>746にある
Me!明細作成とMe.明細作成とでは、何が違うのですか?

関係ないけど、皆さん選挙にいかれるのですね。偉いと思います。
752名無しさん@そうだ選挙にいこう:03/01/10 12:16
>>751
me!チェックボックス.value=-1
753名無しさん@そうだ選挙にいこう:03/01/10 12:17
> 関係ないけど、皆さん選挙にいかれるのですね。偉いと思います。

(;゚∀゚)<……
754初心者くん:03/01/10 12:21
>>752
ありがとございます。
でも、やはり実行時エラー '438'と言われます。
何か追加でインストールしなければいけないとかですか?
755初心者くん:03/01/10 12:45
プロパティで名前が「チェック1」になった
ままでした。正しく付け直したら動作しました。
お騒がせしてごめんなさい。
>>750
煽りか?
757名無しさん@そうだ選挙にいこう:03/01/10 13:31
選挙?
758あぼーん:あぼーん
あぼーん
759名無しさん@そうだ選挙にいこう:03/01/10 15:47
VBAからマクロに変換することってできますか?
760名無しさん@そうだ選挙にいこう:03/01/10 15:47
>>759
なんのために?
761759:03/01/10 16:05
>>760ありがとうございます。
お勉強のためです。 VBAの本を買ったのですが
理解できず困ってます。

Subとか、Dimとか基本的なコマンドなどを
紹介しているサイトがあったら教えてください。
よろしくお願いします。
>>761

> お勉強のためです。 VBAの本を買ったのですが
> 理解できず困ってます。

あなたにはプログラミングの適性がないようです。
あきらめましょう。
763名無しさん@そうだ選挙にいこう:03/01/10 17:21
>>756
煽りでも何でもねーよ、>>746はエラーになるだろ
764名無しさん@そうだ選挙にいこう:03/01/10 17:27
758のあぼーんには何が書いてあったんでしょうか?
>>761
一番適切なのはAccessヘルプのVisual Basic プログラミングの項目を見ることです。

ついでに突っ込んでおくとSub, Dimは"コマンド"ではありません。
それぞれプロシージャ、変数の宣言子です。
Accessはコントロール名に全角を使うのが決まりですか。
うんこに見えて仕方ないのですが。
通常はどっち?
テキストなら
txt全角だよ〜ん
コンボなら
cboコンボだよ〜ん
cmbこれは嫌だよ〜ん ×
です。

半角でももちろんOKです。
だけど全角にすると、コメント書かなくてよいので、手間が省けます。
VBなんて高速に組めるのがウリの低級言語なんだから
いちいち全角半角切り替えるなんて馬鹿らしい。
デバッグの段階でコメント振ればオkでしょ。
769名無しさん@そうだ選挙に行こう:03/01/11 00:05
>>768
アメリカ人は全部半角なのでそんなにコメントを書かなくていいのがうらやましいな〜

日本語だと
社員番号のテキストボックスは
txtSyainCD
txtSyainNo
txtSyainBango
txtMemberID
txtSyainID
いろいろ書き方あるけど、コメントはやっぱり必要なんだよな〜。
770名無しさん@そうだ選挙にいこう:03/01/11 00:05
コントロール名に特定の漢字を使うとフィックスが困難なバグを発生させるので、
痛い目にあった人は二度と全角のコントロール名を使用しなくなります。
Syainって。。。
アフォか。。
772名無しさん@そうだ選挙にいこう:03/01/11 10:59
お忙しいところ、すいません。
2つのサブレポートを表示するレポートをつくっていますが
そのレポートを開く段階で
一個目のサブレポートのレコード数を二個目のサブレポートで
Dcountを使って数えることができますか?


>>769
×Chinpo
○Chimpo
×Etti
×Ecchi
○Etchi
>>770

> 痛い目にあった人は二度と全角のコントロール名を使用しなくなります。

イタイ人は痛い目にあっても痛い目にあった自覚がないので、何度でもイタイ失敗を
繰り返し続けます。
775名無しさん@そうだ選挙に行こう:03/01/11 16:07
変数名をローマ字で表記する場合は
先ず表記方法をヘボン式だとか訓令式にするだとかいろいろ決めます。
取り決めにより
Syain だったり、 Shain だったり
Etti だったり、 Etchi だったりします。
Sato にするのか Satou にするのか悩んだりもします。
私は個人的に作る場合多少バグがあっても、全角にします。

2000では”(”括弧が上手く処理(表示のみ)されないみたいです。
アホばっかりやな。
先に謝っておきます。初歩的な質問ですから。
会社で使っているAccess2000のことです。

頼まれてフォームを作成しているのですが、リンクされません。
顧客番号と名前をリンクさせたいのですが。
顧客番号をコンボボックス(リストボックス)で選ぶと、
顧客名が自動的にコンボボックス(リストボックス)で出るようなものです。
リレーションシップもクエリーも出来たのにフォームだけ出来ません。

今更、ExcelとWordしかわからないとは言えず、こっそり本を買って
調べていますが。
リレーションシップやテーブルがいけないのでしょうか?
コンボボックス(リストボックス)を挿入するときに何か選ぶのでしょうか?
月曜日が完成日なんです。FDで自宅に持ってきていじってます。
778名無しさん@そうだ選挙にいこう:03/01/11 16:38
>>>7
外部参照テーブルの名前等の項目を表示させるには大きく3通りの方法があります。
1.レコードソースに外部参照テーブルを含めてしまい、項目名で単純に参照
  外部参照テーブルと目的のテーブルを結合してしまうことです。したがってレコードソースはテーブルではなく選択クエリーになります。
2.コンボボックスのColumnプロパティーを参照
  社員コード.Column(1) とかで参照します。社員コードコントロールでは、書誌式プロパティ欄に2cm,0cmとかと、社員名をダミーで表示させるようにしておきます。
3.DlookUp関数を使用して参照
  ヘルプ参照
>>775
> 2000では”(”括弧が上手く処理(表示のみ)されないみたいです。

表示以外はちゃんと処理されるのか ?
それはそれで驚きなんだけど...。
>>779
頭で理解してないから、何故大文字が避けられているのかを知らないのだろう。
それこそが後々大きなバグを呼ぶのにね。
781780:03/01/11 17:58
ごめん2バイト文字やね
一応全角文字も使ってよいとうたわれていますが。
SQLサーバーでも項目名に漢字が使えますが。

バグといえば、97でオブジェクト名にひらがなの「え」(だったかな?)を使うと認識されなくなるバグが有りましたが(自分で見つけた)
2000においては漢字を使っても大丈夫だと思います。

※D/Bの項目名に漢字が使えない場合は項目名と項目名(漢字)の対応表を作る必要があるのです。
最新のオラクルでは漢字が使えないものの、コメントとしてテーブルオブジェクトに含めることが出来ますが。
データベースアプリの場合バグがあると最悪の場合、思いも
よらないオブジェクトをドロップしちゃうからね…
( ´,_ゝ`)プッ…

全角厨は家庭で自分用のアプリでも作ってなさいってこった。
>>780-781
言ってる事が意味不明。
単に、DBMS のバグと言うだけだろ。
786名無しさん@そうだ選挙にいこう:03/01/11 22:50
アクセス初心者です。
クエリでデータ入力や編集は
出来ませんかね?
>>786
まず、要件を整理すること。

> アクセス初心者です。
> クエリでデータ入力や編集は
> 出来ませんかね?

これだと、「車でじいさんの家に行けますかね?」というのと大差ない。
(具体性がないので、コメントのしようがない)
まぁ(推定)初心者の言うことだから、結合したクエリをテーブルをダイレクトに開いた時のように
編集出来ませんかね?ってことじゃ?

(その方法じゃあ)出来ません。
>>786
入力用のフォームに、選択クエリーを連結することは可能ですヨ。
この場合はフォームからの入力になりますが。
また、選択クエリーからのテーブルの編集も出来ますヨ。
これは、クエリーの画面から直接という事です。
790名無しさん@そうだ選挙にいこう:03/01/12 21:13
>>2000においては漢字を使っても大丈夫だと思います。

根拠は?
UNICODEサポートの関係で一般的に97より2000のほうが、日本語名称に弱くなっていると思うが?
>>790
>弱くなっていると思うが?
「弱くなっている」とは、またひどい抽象的な言葉ですね?
日本語に弱くなっているとはどういう事??
たまに、助動詞を間違えるとか、文末は常に完了形になってしまうとか??
>>791
>>790じゃないけど。
よく分からんが「より大丈夫じゃなくなっている」ってことでしょ。
君、国語の点数悪かったでしょ。
793名無しさん@そうだ選挙にいこう:03/01/12 22:22
>>791
っていうか、しょうもないことでつっこむな。
ガキじゃねぇんだからよ。
794791:03/01/12 22:25
俺かが客で、「日本語により弱くなってます」とか「強くなってます」なんて言うSEいたら、会社ごと、直ちに切るぞ。
795名無しさん@そうだ選挙にいこう:03/01/12 22:42
>>791
話の流れでわかるだろ。

しょうもないことでガタガタぬかすなっちゅうねん。

頭固いな。

> 会社ごと、直ちに切るぞ
おまえみたいなやつがいるところは
こっちから願い下げだよ。
796名無しさん@そうだ選挙にいこう:03/01/12 22:44
>>795
脳機能が低下してるんだから入院すりゃいいのに
797名無しさん@そうだ選挙にいこう:03/01/12 22:48
50歩100歩だな。
798名無しさん@そうだ選挙にいこう:03/01/12 22:57
>>796
なんで俺が入院・・・・・。
799日本語に弱い人:03/01/12 22:57

>>797

歩は18枚しかありませんが、何か?
(余り歩2枚があったとしても全部で20枚)
800名無しさん@そうだ選挙にいこう:03/01/12 22:59
>>799
お前、パイパンだろ?
>>800

パイパンなら盲牌できますが、何か?
もうやめとけ。ハタから見てるとこんな感じだよ。
                               .                     /l '
            / ̄ ̄ ̄ ̄\                      / ̄ ̄ヽ    / /    /(
          /     ○  ○、    ,              / /\  \/   |   / ) ;
    ‘ .    |Y  Y        \                 mmっ  \ / ⌒ 狐火`'  ヽ 
          | |   |        ▼ |            ,           /  ○    \  |  ,
          | \/     __人_|                       /;;;;;;;;;;ヽ     ○ /
 .        |       /wVWV                        );;;;;;;;;;;;;)       /
          |      (w                             \;;;;(__ノ__ノ   /
      __   /      \M∧w∧_   ‘                 /  (_/※_;_/
     / ヽ/          ̄ ̄ ̄)_`ー--、、、_             ノ           
   / ヽ \        / ̄ ̄ ̄   二,       ̄``ー、、_      (             ヽ
  /  ヽ \ |ヽ           _ー,      ー―     ̄ ̄)   /   ヽ__ノ      \
   ヽ  \ |/ /       /   /     ̄ ̄`ー――-----、__っー'  /           /\
     \ |//       /  /     .               /           /



非常に見苦しい。余所でやれ。
803791:03/01/12 23:05
日本語にあいまいな表現使う奴はプログラムにもあいまいなところが必ずあって、
それは必ずバグに繋がるって事なんだよ。
そしてバグ作っておきながら、適当な言い訳して客を煙に巻こうとするんだよ。
おかしな日本語使って。
>>802
そんな低脳まるだしのAA、ペースト用に保存してるお前に
言われたくない。
805名無しさん@そうだ選挙にいこう:03/01/13 08:51
日曜大工の得意なマイホームパパと本職の大工さんが話し合っ
てもかみ合わないのよ。
しかも日曜大工パパは荒らしたいだけの半笑いときているな。
全角・半角の話ですが、テーブル名やフィールド名はどーなんでせう?
M$謹製Northwind.mdbやAddrbook.mdbは日本語使ってるよね。
808名無しさん@そうだ選挙にいこう:03/01/13 20:43
VBからAccessMDBをつついたことはあるのですが、
Access自体を扱った経験が無く、今、初めて取り組んでます。

フォームのVBAコードから自mdbのテーブルのデータを取ってくるのに、
絶対ADOやDAOを使わないといけないのですか?
それともAccess専用のデータアクセス方法があるのですか?
809名無しさん@そうだ選挙にいこう:03/01/13 21:30
>>791
相手が客であれば、2000の全角コントロール名は
「使い物になりません」と答えます。
マイクロがダメと言っていない以上「使えません」とは言えないのでね。

一例を上げれば、97ならprocedureの名称に漢字を使用しても、それなりに
通るが2000だと、結構な確率でずっこける。

いつ、どの程度コケるか具体的な数値は出せないよ。
そんなテストして遊んでるより、全角名称を使わないでモノ仕上げた方がましだから。
別に漢字名称使いたければ使えばいいよ。絶対に動かないものでもないし。

根拠なしに言っているといわれるのも癪だから例を上げると「芸」を含んだ名称なんか
はコケやすい。必ずコケる訳でもないのしょっぱいところ。

やばめの漢字はググッてみれば結構見つけられると思う。
個人的にはそんなの調べるより全角使わないほうが簡単だと思う。
810名無しさん@そうだ選挙にいこう:03/01/13 21:46
>>808
フォームのプロパティにデータソースを指定できますので、
そこにテーブルなりクエリーなりSQL文なりを指定すればレコードに
アクセス出来るようになります。

フォームにレコードソースを指定すると、フォームに貼り付けたコントロール
のデータソースにテーブル(とか)上のフィールドが指定出来るようになります。

Hoge = Forms.[MyFormName].[MyTextBox].Value

みたいな感じでカレントレコードのフィールド値を取得できます。
811808:03/01/13 21:54
>>810
お返事ありがとう。
コントロールとデータソースの接続方法ですね。
その辺りは本で学びました。
Accessは接続しっぱなしなんですね。なんだか危なっかしいなと思いました。

そうでなくて、テーブルのソースになっていないデータを一時的に参照する場合です。
今は、仕方なくDAOでSQL投げて取得していますが、何かやり方があるんじゃないかと
思いまして。
812名無しさん@そうだ選挙にいこう:03/01/13 22:15
>>811
Dlookupって関数なんかがありますけど、DAOでSQLのほうがいいかも。
↑遅いし。

あと、テーブルにアクセスする為のクラスなんかでっちあげといて
インスタンス化したり消したりする人もいるけど、
やっぱりDAOでSQLのほうがいいかも。

フォームは単なるクラスとしても使えるので、UIに使わないデータアクセス
専用のフォームを作って、UIとして開いているフォーム上のコードから
インスタンス化してテーブルにアクセスするなんて方法もありますが
やっぱりDAOでSQLのほうがいいかも。
>>809
おれもプロジャ名にまでは漢字使わん!
プロシジャにはどんな場合でも必ず作成者名とか作成日とかのコメントつけるから特に名前が漢字でなくても良いんだ。

だけど、コントロール名の話しているのに、なんでプロシジャ名の例なんだろうか?

>>812
なんかUIとかクラス化とかさりげなく高度な技持ってますね!(知らないの俺だけ?)
それからDAOはなるべく使わないほうが良いかも。
814名無しさん@そうだ占拠しよう:03/01/14 00:17
Access97から2000に問答無用でアップグレードしたいんですが。
もちろんタダで。
ダウンロードできるサイトはないでしょうか。
情報キ・ボ・ン・ヌ、と。
815名無しさん@そうだ占拠しよう :03/01/14 00:20
>>814
脳機能低下ですか?
816名無しさん@そうだ占拠しよう:03/01/14 00:31
Access97インストール済みです。
Accessテキスト本でベンキョワしようと付属のCD-ROM収録の
ファイルを開こうとしましたが駄目です。
CD-ROMは2000/2002対応です。
そうゆう理由があります。何とかならないでしょうか。
817名無しさん@そうだ占拠しよう:03/01/14 00:40
ちなみにOSはXPです。
窓の社、ベクター、いろいろ見て回りましたが、なさそうです。
やはり買わなきゃならんのでしょうか。
Access2002。
818名無しさん@そうだ選挙にいこう:03/01/14 08:55
秋葉原とかの露天を探せ
819名無しさん@そうだ選挙にいこう:03/01/14 16:33
VBAで『DoCmd.Quit acPrompt』という記述があるのですが
acPromptがあるときと、無いときの違いを教えてください。
>>819
acPromptでヘルプしてご覧!
821名無しさん@そうだ選挙にいこう:03/01/14 16:55
>>819 ありがとうございます。ヘルプを見たのですが
組み込み定数ということ以上、わからないんです。
ヒントだけでも、よろしくお願いします。
822名無しさん@そうだ選挙にいこう:03/01/14 17:01
VBAを勉強してるのですが
細かいことがあまりよくわかりません。

Accessで使うVBAのウソコでもわかりやすいサイトや
お勧め書籍があれば教えてください。
よろしくお願いします。
>>821
自分にレスしてどうすんの?
Quit メソッドで引いて「AcQuitOption」をクリックすると
表示されるよ
PS.Access2000以降のWebヘルプだったらVBA画面から
引かないと出ないかも…
824名無しさん@そうだ選挙にいこう:03/01/14 19:54
勤務先で頼まれて初めてAccess2000使ってます。
顧客住所録のテーブルを使用してフォームを作って、そのフォームの中にコンボボックスを作って
あいうえお順にコンボボックス内に顧客名を表示させ、検索・抽出出来るようにしました。
で、検索されたレコードだけをを印刷用フォームで封筒やラベルに印刷をしたいのですが、
単純に印刷のコマンドやるとすべてのレコードが印刷されてしまいます。
どのようにすれば検索フォームで表示されている顧客のみ印刷できますか。
>>824
安易だが確実。

そのテーブルと全く同じテーブルを作る。仮にtbl印刷とでもしよう。
レポートは、このtbl印刷を元に作る。
で、フォーム。コンボ選択→印刷ボタン押される。
ここで、新規に作ったテーブルを空にする→選択されている一件のレコードだけ移す、
という作業をしてから印刷実行。
ウマー。
826名無しさん@そうだ選挙にいこう:03/01/15 09:10
>>823 その手順で調べるとacPromptが
出てきました。ありがとうございました。
827名無しさん@そうだ選挙にいこう:03/01/15 09:20
VBAでOn Error GoTo 終了_Err
の最後の、『_Err』ってどういう意味ですか?
828名無しさん@そうだ選挙にいこう:03/01/15 10:08
>>827
エラーだろ。
829ひよこ名無しさん:03/01/15 14:06
アクセス2kです。 VBAの
MsgBox Error$ ってどういうときに使われるのですか?
830山崎渉:03/01/15 16:40
(^^)
831名無しさん@そうだ選挙にいこう:03/01/15 16:51
質問させてください
フォームAのコマンドボタンをクリックしてフォームBを開くときに
フォームBの既定のビューを切り替えることは可能でしょうか?

フォームAのコマンドボタンに
DoCmd.OpenForm "A", , , , , , Me.Nameとして

フォームBの開くときのイベントに
If Me.OpenArgs = "C" Then
Me.DefaultView = 1
Else
Me.DefaultView = 0
End If

としたのですがエラーで表示されません。

他の方法で実現できるものなのでしょうか?
832831:03/01/15 16:54
スミマセン以下のように訂正
DoCmd.OpenForm "A", , , , , , Me.Name→DoCmd.OpenForm "B", , , , , , Me.Name

If Me.OpenArgs = "C" Then → If Me.OpenArgs = "A" Then
833824:03/01/15 19:03
>>825
ありがとうございます。
確実そうですね。このやり方でチャレンジしてみます。
口では説明しにくいので見ていただけますか?
ttp://boo-takagi.hp.infoseek.co.jp/data/bobo_20030115193141.zip
もうちっとスマートに作れないでしょうか?
>>834
怪しいコードとか混じっていませんか?(w
2chで晒されるファイルって恐怖心が先走って見る気がわかないんですけど・・・
>>834(トモヤ)
Excelスレでレス付けちまったが、マルチすんな、貴様。
837名無しさん@そうだ選挙にいこう:03/01/16 06:51
1. 画像(Jpeg,Targa,PSD,QT)などのバイナリデータを取り込む方法はありませんか?
フィールドに貼付ける方法はわかったのですが、登録ボタンを押すと、ファイル選択
のダイアログが開き、ファイルを選んでOKを押すと取り込まれるようにしたいのです。

2. 1つのMDBにいくつか画像貼付けたところ、すぐにGB単位のMDBになります。
画像は外部データとしてファイルシステム上に保存しDBにはリンク(パス)情報のみ
保存する方法はないでしょうか?

3. 複数のPCから利用したい場合、クライアントPC内のデータを外部データ
として扱うと他のクライアントPCから扱えません。MDBを格納しているPCをサーバーに
見立てて、アクセスからネットワーク経由のファイル転送を制御する方法はないでしょうか?

Win2000Pro MS Access2000の環境です。よろしくお願いします。
>>837
1.Microsoft Common Dialog Control を使って
2.取得したファイル名をテキストフィールドに保存するDBを作成して
3.mdbファイルを共有設定した後、他のPCではテーブルのリンクを使って操作する。
839名無しさん@そうだ選挙にいこう:03/01/16 12:55
>>838
データは手作業でサーバーにコピーするんですか?
VBの本で事例を見た覚えがあるんだけど、その本どっか行っちゃった。
VBAで出来るのかは試しませんでした。
840名無しさん@そうだ選挙にいこう:03/01/16 15:32
>>839
データソースのパスは>>838で取得する。

FileCopy "\\DataSourcePC\DataFolder\SpecialEro.jpg", "D:\ServerFolder\SpecialEro.jpg"
841名無しさん@そうだ選挙にいこう:03/01/16 15:38
http://www6.ocn.ne.jp/~endou/index2.html
     ★YAHOOOプロフィール★
アクセス2kです。
97で作ったと思われる、mdbファイルをもらったのですが
5つのテーブルのうち主キーがあるのが1つだけでした。

どうやったら、こういうことができるのですか?
教えてください。よろしくお願いします。
843にいこう:03/01/16 17:47
>>842
?主キーがあるテーブルを作りたいの?
?主キーのないテーブルが作りたいの?

主キーのないテーブルばかりだなぁ〜オレ…
>>842
主キーを作らない。
845842:03/01/17 08:30
ありがとうございます。
主キーを設定せずに、テーブルのデザインビューを閉じようとすると
主キーが設定できていないとおこられます。
自動的にフィールド名:ID  データ型:オートナンバーの項目が増え
主キーが設定されるんです。

どこで設定したら、主キーなしのテーブルができるのでしょうか?
846名無しさん@そうだ選挙にいこう:03/01/17 08:37
>>845
まぁ落ち着いてダイアログのメッセージでも読めや。
>>845
そうそう、怒られてるんじゃなく「どーすんの?」と言われてるだけでしょ
848名無しさん@そうだ選挙にいこう:03/01/17 10:02
849名無しさん@そうだ選挙にいこう :03/01/17 11:38
初心者です。どなたか教えて下さい。
時間の計算ですが、例えば8時から13時までですと5時間ですが
この引き算をクエリーで行いたいんですが
どのようにしたらよろしのか、お願いします。
日時をまたぐことはありません。
>849
DateDiff関数を調べてみてね。
851名無しさん@そうだ選挙にいこう:03/01/17 12:00
849です
850さん。本見てやつているんですが
出来ないんです。
852名無しさん@そうだ選挙にいこう:03/01/17 12:38
複数のフィールドを主キーに設定する設定した全てのフィールドのレコードの重複はできないんですか?
それと外部参照ってどうやるんですか?
>>851

本を読むよりヘルプを読む方が先。
854名無しさん@そうだ選挙にいこう:03/01/17 17:44
>>851
どこでつまづいて出来ないのかよくわからんが
日付の前後を#で囲み忘れてるとかか?
855名無しさん@そうだ選挙にいこう:03/01/17 18:17
‘クエリで引き算’の意味がよく分からないが、
適当なクエリをデザインで開いて、表示(V)→SQLビュー(Q)として
次の構文を貼り付けてみてくれ。参考にはなると思うけどな。

SELECT #01/07/2003 08:00:00# AS 開始時刻,
#01/07/2003 13:00:00# AS 終了時刻,
DateDiff("h",[開始時刻], [終了時刻]) AS 経過時間;
Access2000です。
テーブルのデータで重複するものを、ひとつを残して他をすべて削除する
方法はありますか。

ひとつのID(主キーではない)をひとつの会社に割り当てています。
ですが、会社の表記が全部違う(例:「株式会社モナー」「潟ciー」
「株式会社 モナー」)。
正確な社名を揃えたファイルがないので、それをぶつけることもできません。
とりあえず重複クエリでIDの重複する会社を抽出しました。
「株式会社モナー」「潟ciー」「株式会社 モナー」と並んでいた場合、
一番上のデータを残して(残すデータはどれでもよい)、ほかの二つを削除
したいのです。
どなたかご教授お願いします。



>>857
ルーチン的にやらないのであれば、重複クエリで何とかなんない?
クエリの新規作成で「重複クエリ」ってあった気がするのだが…


ACCESS"????????????????

mdb????????????????mdb??????PC????mdb?
?????????????????
LAN???????????windows??????????????????????
?????????????????????
????????????????????????????????

???????????????????????????

860857:03/01/19 01:16
>>858
>とりあえず重複クエリでIDの重複する会社を抽出
したんですが。それからどうしていいか分からないんです。
861859:03/01/19 01:26
文字化けすみません(自宅safari)。

バックエンドmdb(データのみ)と各PCに使うmdb(クエリーとレポートのみ)で
テーブルリンクさせていたのですが、windowsのネット共有にウイルス対策と
してパスワードを必ず入れることになったためにこのリンクが切れてしまいます
(当然のごとく”パスが見つかりません”になる)。
いちいちバックエンドのあるフォルダの他のファイルを開くように各位に指示するの
も現実的でなく・・・・良策ありませんでしょうか?

>>857
数がそれほどないならば悩むよりも置換で統一しちゃうほうが早いのでは?
862857:03/01/19 01:37
>>861
レコード数7桁ほどあります。なので置換は失敗したときが怖いんでなるべく
使いたくありません。
それとこれからルーチンになりそうなので、もうちょっと確実な方法が
あればいいなと。
>>860

861の言うように少ないのならそれでいいのかな?

でもまぁ後学の為に…
その重複クエリをデザインモードで開いて抽出条件に
いらない社格(株式会社とか)を下のように入れる

*株式会社* (自動的Likeが付く)

*はワイルドカードでこの場合、「株式会社」が前だろうが後であろうが
抽出してくれる

これで表示してみると要らないデータのみになるからCtrl+Aで全選択して
Delを押せば消えちゃうよ
864863:03/01/19 01:43
それなら上を実行する前に当該テーブルをコピーしておいた方が
いいよ
865863:03/01/19 01:51
1IDに対して複数の社名が存在するところから察すると
データのテーブルですよね。
それと今後の為にでき上がったものから会社マスタテーブル
(IDと社名のみ)を作成しほうがいいと思います。

データのテーブルには会社IDのみでいい(社名フィールドは要らない)

表記する場合は…
会社マスタテーブルとデータテーブルをクエリで表示してやればいい
866857:03/01/19 02:00
>>863
さっそくやってみました。鰍フ社名のものだけ残りました。
「潟ciー」「梶@モナー」と2種類になりました。
あとはこれをなんとかするだけです。



867857:03/01/19 02:03
あれ。「株式会社 モナー」「株式会社モナー」の2件でダブっていた場合、
両方消してしまいますね。一件を残したいのですが…
(質問の仕方が悪かったですね。すみません。ダブっているパターンは
複数あるんです)。
868857:03/01/19 02:10
Replace関数でスペースを取り除けばいいのか。

…なんか考えすぎてたようです。
みなさん、休日の夜遅くに返答してくださってありがとうございました。
これで月曜日を安心して迎えられそうです。
869857:03/01/19 07:41
連続投稿ですみません。
いまさらなんですがヘルプに「テーブルから重複レコードを削除する」
という直球な項目がありました…  

1.元テーブルのコピーを「テーブル構造のみ」コピー
2.コピーしたテーブルに主キーを設定
3.追加クエリを作成。元テーブルを*をドロップしてフィールドにぶちこむ
4.「追加クエリですべてのレコードを追加できません」と表示されるが
無視してyesを選択
5.するとコピーしたテーブルに、求めていたものが作成される
重複したものは、ひとつだけ残してきれいサッパリ

やっと眠れる〜。
しかし原理がぜんぜん分からない。どうしてこうなるんだろう。

>>863
>それと今後の為にでき上がったものから会社マスタテーブル
>(IDと社名のみ)を作成しほうがいいと思います。
さっそく作りました。これは役に立ちそうです。

870863:03/01/19 23:14
結局、7時40分迄起きてたんだ…
>>869の方法のキーポイントは2の「主キーの設定」じゃないかな?
871名無しさん@そうだ選挙にいこう :03/01/20 09:27
VBAでMeキーワードがありますが、これは
フォームの代名詞のみで使われるのでしょうか?
よろしくお願いします。
872名無しさん@そうだ選挙にいこう:03/01/20 10:52
VBA勉強をしています。

Private Sub 検収済み_Click()
Me!lst見積ID.RowSource = "クエリ_検収済み"
End Sub

これはクエリ_検収済み」の中にある「見積ID」という
選択クエリ(1〜12までの数字)をコンボボックスとして
表示するものですが、「lst」があっても無くても
動作します。クエリでは「lst」は付いていません。

 「lst」とはVBAで見やすくするために、リストであるということを
表現するためだけにつけられたものなんでしょうか?
よろしくお願いします。
>>872
Meというのはフォーム上のという意味で
あなたの作ったファーム上にたぶん「lst見積ID」という名前の
コンボボックスがある。

この場合は
フォーム上の「lst見積ID」の「値集合ソース」に「クエリ_検収済み」の
データを入れなさいってこと
874名無しさん@そうだ選挙にいこう:03/01/20 11:47
非連結のテキストボックス入力時に、3桁区切りのカンマを自動挿入
するにはどうしたら良いですか?
もしや、非連結では無理っすか?
>>874
書式
>>875
数字を入力してく際にリアルタイムにカンマを挿入したかった
んすけど、書式じゃ無理ですよね。
適当にKeyDownイベントでコーディングして解決しますた。
スレ汚し申し訳ない。
877名無しさん@そうだ選挙にいこう:03/01/20 17:23
ACCESS2kなのですが、
コントロールの移動時の動作で
「フィールド全体を選択」にしているのですが、
特定のコントロールだけフィールドの最後に移動させたいです。
どこをいじればよいのでしょうか?
フォーカス取得時に何か書くのでしょうか?
教えて下さい。
>877
>552見れ。
879名無しさん@そうだ選挙にいこう:03/01/20 18:26
>>857
テーブル定義をちゃんと書いてくれれば、そのままコピペできるSQ
Lも書けるんだが...
880ei:03/01/20 18:31
881Toshi:03/01/20 23:23
OS:WinMe/Xp等
Access97の場合で・・・

販売管理(モドキ)を作っています。
帳票フォームの「フォームヘッダー」部に、顧客Cdをコンボ等で設定して、
詳細行部に「入金金額」を入力したいのです。
フォームのソースは、「入金ファイル」です。

顧客Aの入金を行った後、ヘッダーのコンボで顧客Bを選んだ時に、
詳細部に残っている「顧客Aの入金情報」を消す事は可能でしょうか?
882もみじ:03/01/20 23:49
>>881
「消す」というのは
1.Aのデータから入金金額を削除して顧客Bの画面に切り替えるのか
2.Aのデータに入金金額を格納して顧客Bの画面に切り替えるのか
どっち?
1.は無理ではないが面倒。非連結フォーム+VBA。
 一般的なユーザインターフェイスガイドラインにも沿ぐわない物が
 できる可能性がある。素人にはお勧めできない諸刃の剣。
2.は普通に可能。
アクセス2000です。
会社で作ったデータベースを家に持ち帰ってちょこちょこいじろうと
目論んでます。
守秘義務もありますし何よりファイルがでかいので、
テーブルからデータが一切ない状態の、データベースのコピーが欲しい
んです。
小さいファイルならばふつうにコピーして、テーブルのデータを
削除すればいい話なんですが、ファイルがでかいのとPCが貧弱なのとで、
それだけで30分以上かかってしまいます。
どなたかご存知の方、よろしくお願いします。
>>883
空のデータベースを作って
元からテーブル構想だけインポートすれば?
インポートにも多少時間かかると思う。
30分程度かけろって話。
昼休憩で終わるじゃん。
886883:03/01/21 07:59
>>884
ありがとうございます。ためしにやってみます

>>885
>30分程度かけろって話。
ごもっともです。が、実はサックリできる方法があるのではと。
コピーしてる間、何のアプリも動かせず本当に不便でして… 
887名無しさん@そうだ選挙にいこう:03/01/21 09:47
ファイルを生成する長い処理がありまして、フォームに貼ったラベルに
「*****.txtを作成しています」というメッセージをパッ、パッ、と表示させたいのですが、
DoEventsを噛ませているにもかかわらず、ラベルのキャプションが変わってくれません。
他に何か設定しなきゃいけないのでしょうか。
888877:03/01/21 09:58
>>878
過去ログ目をとおしたつもりだったんですが…
そのまんまの質問があったんですね。
失礼しました
>>883
編集(E)→ 貼り付け(P)→ テーブルの構造のみ(S)
これじゃ駄目なのか?基本だぞ(藁

>>887
lblMessage.Caption="*****.txtを作成しています"
me.Repaint
doevents
これでどうよ?
890887:03/01/21 10:23
DoEvents
lblHelp.Caption = "001.txtを作成しています"
Me.RePaint
'**〜〜作成処理
lblHelp.Caption = "002.txtを作成しています"
Me.RePaint


これで逝けました。RePaintなんてしないといけないんすね。
VBではいらないのに。
ありがとうございました。
891887:03/01/21 10:24
>>890>>889宛です。
申し訳ない。逝ってきます。。
892Toshi:03/01/21 10:39
>>882
2.Aのデータに入金金額を格納して顧客Bの画面に切り替えるのか
・・・です。

ヘッダーで処理日を設定しておき、
ヘッダーのコンボで顧客を選んでから・・・
詳細部に「入金金額」を入れると、
「処理日=入金日、顧客、入金金額」の入金データが出来ます。

次に、ヘッダーの顧客を入替えた場合に、
希望としては、詳細部で先ほど登録した「入金金額」を
消したい訳です。。。よろしくお願いします!
>>892
AfterUpdateイベントを利用しる。
顧客コンボがアップデートされた後で入金金額テキストをクリア。

・・・でもな、普通は入金金額を入力してレコードが書き込まれた直後に
初期化するんじゃないかい?なぜに顧客を変更した時なん?(w
894名無しさん@そうだ選挙にいこう:03/01/21 16:12
アクセス2kで、テーブルを作成したあと
それを、クエリで表示させると、テーブルとテーブルを
結ぶ線がありますが、削除したいときに線が細くて
選択するときにイライラします。

この線を太くする方法ってありますか?
よろしくお願いします。
895名無しさん@そうだ選挙にいこう:03/01/21 16:14
Ac2kで変な現象が起こって困ってしまいました。
サブフォームの詳細部のコントロールをクリックすると
先頭レコードの同一コントロールにフォーカスが移ってしまうのです。
ひどいときにはフォーカスが点滅したりもします。
そのサブフォームは他のフォームでもサブフォームに使っているのですが
そちらでは何も起こりません。単体で開いても何も起こりません。
現象が起きたフォームでもさっきまで正常でした。
サブフォームのフッタにテキストボックスで合計欄を作ったタイミングで
おかしくなりました。
再起動しても、該当フォーム(メイン・サブとも)を他のMDBに移して
インポートし直しても直りません。
どのコントロールにもフォーカス取得・喪失関係のイベントは入れていません。
どこを直せばいいのでしょう、教えて下さい。
896ccc:03/01/21 16:29
http://www6.ocn.ne.jp/~endou/index2.html
      ★こんなサイト見つけました★
>>895
コントロールではなくフォーム自体のイベントはチェック済?
また、「クリックすると」つと書いてあるのでクリック時(又はマウスクリック時)の
イベントは?
898895:03/01/21 17:06
>>897さんレスありがとうございます。
フォームイベントはオープン時にフィルタをかませていて
意図どおり表示されるので問題ないかと思います。
ほかのイベントは明細の右端にコマンドボタンがあり
クリックで該当レコードの更に細かいデータの単票フォームが開くようになっています。
(クリック、ENTERキー可)。
現象はクリックのほかtabなど全ての移動手段で起こりますが
飛ぶ前の一瞬は入力が利きます。
こちらでも色々試していますのでお力をお貸しください
>>898
データベースユーティリティの修復は?ダメ?
900895:03/01/21 18:17
>>898
だめです。
前レスの後、以下のことを試しました。
他のPC2台に同じMDBをコピって動かしても現象が再現しました。
空のMDBに全てのオブジェクトをインポートしても再現しました。
コントロールが移動中にマウスポインタが砂時計になることがわかりました。
何か情報がありましたら引き続きお願いします。
何が内部で起きているのか分からないけれど・・・
メインフォームにおけるサブフォームの名前を変更して
旧名前のコードを新しい名称のイベントにカット&コピーして再コンパイル。
何となく名前が原因のような気がする・・・けど根拠なし。
902895:03/01/21 18:58
>>901
レスありがとうございます。
メインフォームにおけるサブフォームの名前変更、
サブフォームそのものの名前変更を試しましたが変わりませんでした。

フォームが出ないとか数値が取れないとかだと
ある程度原因が掴めるのですが、
こういう類のことは全くわからないので皆さんが頼りです。
引き続きお願いします。
>>902
しょうがないからコピーしたものから追加したコントロールを
削除してみたら?(サブフォームの集計だっけ?)

それでもダメだったら、作り直した方が早いかな?
WindowsXP Standardが入っているのですが、Access 2000/97 をインストールできますか
905名無しさん@そうだ選挙にいこう:03/01/22 08:56
>>904
折れのところではXP HomeにAC97を入れて普通に使えているが、Standardは知りません。
906bloom:03/01/22 09:03
907名無しさん@そうだ選挙にいこう:03/01/22 10:13
MSのサイト見れ。
908895:03/01/22 13:11
みなさんありがとうございました。
作り直しても駄目でしたが
試行錯誤の結果、2つあったリンクフィールドを1つにすると
再現しなくなったので
もう1つはフォームを開くときのフィルタで対応しました
(レコード移動しないフォームなので)。
他のフォームはリンクフィールドが2つでも正常に動いているので
ちょっと納得いかないのですが、時間もあまりかけられないので
仕方ないところです。
またお力添えお願いします。
909OSWINXP:03/01/23 02:18
Access2002で2002形式のファイルを97形式に変換したいのですが
「レコードが大きすぎます」といわれ変換できません。
ヘルプ等みたのですがよくわからなくて・・・。
データの制限があるのでしょうか?
910DAISUKE:03/01/23 03:23
リレーションシップの設定画面で、参照整合性のチェックをすると
「このリレーションシップを作成して、参照整合性を設定できません」
というエラーが出てしまいます。
手元にある参考書では、参照整合性はデータ形式と、フィールドサイズが
異なる場合には設定できないということが書いてありましたが、それは問題
ありませんでした。それ以外の理由で参照整合性が適用されない理由は
あるのでしょうか?ご存知の方、よろしくお願いします。
>>910
構成見ないとなんとも。
データが増えた時に整合性が保たれるか考えてみ。
912( ´Α`):03/01/23 16:54
HPをお持ちの方宣伝して収入
http://www.we-love.to/profit/index.pl?id=09304649
過去スレ"その4"、"その5"がhtmlコンバートされましたので
次スレを建てる方は過去スレリンクの修正をお願いします。

・・・と言うかテンプレート用意したほうがいいですか?
>>913
ヨロ。
915名無しさん@そうだ選挙にいこう:03/01/23 21:20
おしえてください。
レポートでRecordcountっていう、コントロールソースを使って、
レコードの横に番号を付けたいのだけれど、正しい設定の仕方が
わかりません。
ヘルプで探すけど、出てきません。使い方教えてください。
>>915
テキストボックスのコントロールソースに"=1"
集計実行を"しない"以外に設定
917名無しさん@そうだ選挙にいこう:03/01/24 06:48
すみません、教えてください。
IME郵便番号辞書を2002年11月の最新版にして、
メモ帳で212-0016が変換できることを確認し、
いざ、Access2000で住所入力支援機能で入力してみたら
反映されず、2002年8月版のままで、変換されませんでした。
ウィザードにはフィールドの指定しかありませんし、
どうやったら反映されるのでしょうか。
918名無しさん@そうだ選挙にいこう:03/01/24 10:30
VB質問スレでも質問したのですが、回答が得られなかった(解決しなかった)ので
こちらで質問してみることにしました。

Access2000で作成されたデータベースがあり、その中のあるテーブルのフィールドに
OLEオブジェクトとしてPhotoshop形式のファイルが埋め込まれています。
Accessで見ると「Adobe.Photoshop.Image.4」と書かれており、クリックすると
Photoshopが立ち上がる状態です。
さて、このようなレコードが多数あり、Photoshopの画像を別ファイルとして
保存する必要に迫られたのですが、やり方が調べても分かりません。
(OLEオブジェクト ファイル 保存 などでググってみたのですが・・・)
どなたか、このようなOLEオブジェクトのファイルを抜き出して保存する方法を
ご存知じゃないでしょうか。できればVB、もしくはVBAで自動処理したいです。

環境はWin2K(SP3) + VB6(SP5) + Access2000(SP3) + Photoshop6 です。
919918:03/01/24 10:31
なお、VBで下記のようにソースを組み、ファイルに出力するところまではできたんですが、
実行してできたファイルをPhotoshopで開こうとすると、
「有効なPhotoshop書類ではありません」と言われてしまい、エラーになってしまいました。
どこが悪いのか分かる方いらっしゃいましたら、アドバイスお願いします。

# なお、
b = rec.Fields("画像") の行を
b = rec.Fields("画像1").GetChunk(0, lngLen) に変えてみても同様の結果でした。

------------------

Dim b() As Byte

lngLen = rec.Fields("画像").FieldSize
ReDim b(lngLen - 1&)
b = rec.Fields("画像")

Open "c:\tmp.psd" For Binary As #1
Put #1, , b
Close #1
920:03/01/24 10:51
現金必ずもらえる
企業からのメールを受信することで広告料がもらえます。
https://www.e-ats.jp/ddm/i?INTRO_ID=a00003950
・歴代スレッド
- html化済み -
ACCESS2000総合相談所
http://pc.2ch.net/bsoft/kako/965/965614164.html
ACCESS総合相談所 その2
http://pc.2ch.net/bsoft/kako/1007/10079/1007987001.html
ACCESS総合相談所 その3
http://pc.2ch.net/bsoft/kako/1019/10190/1019087338.html
ACCESS総合相談所 その4
http://pc.2ch.net/bsoft/kako/1027/10274/1027491281.html
ACCESS総合相談所 その5
http://pc.2ch.net/bsoft/kako/1033/10331/1033182163.html
>917
Officeアップデートの郵便番号辞書をいれてみたら?
IMEのだけじゃなくて。
>>918-919
ReDim を宣言しないでやってみてくれ
924918:03/01/24 11:54
>>923
レスありがとうございます。
Redimを宣言しないとはどういう意味でしょうか?
ためしに変数宣言強制を外して、Dim b() As Byte の行を消して
やってみたら、代入行で「型が一致しません」とエラーが出てしまいました。

また余談ですが、>>919のソースで作成されたファイルをエディタで
開いてみると、バイナリに混じって「Image Photoshop.Image.6」などの
文字も見え、ある程度は正常に読み込めているように思えます。
925923:03/01/24 11:57
>>924
Dim b() As Byte は必要
Redim とその上の二行だけ外してやってみて
926918:03/01/24 12:10
>>925
なるほど、理解できました。
で、試してみたんですが、結果は残念ながら、バイト数も内容も
まったく同じファイルが作成されてしまいました。
念のためPhotoshopで開こうとしてみましたが、やはり開くことは
できませんでした。
927名無しさん@そうだ選挙にいこう:03/01/24 13:33
SQLのINSERTの構文を使ってデータベースに1行分の項目を追加した場合は、
最終行に追加されるのでしょうか?
プログラムを実行してデータを追加した後に、テーブルを開いてみると、
最終行ではなく途中の行に挿入されていました。
これはAccessが勝手に並び替えてくれているということなのでしょうか?
>>926
Accessのオブジェクトの埋め込みでは、元ファイルの先頭と末尾に
OLEに関する情報(?)が数十byte付加されています。
このため、>>919 のコードでは付加情報付きのファイルが作られます。
PhotoShopが認識しないのはこれが原因です。
問題は付加情報をどうやって取り除くか?なのですが私には分かりません。
付加されているのはOLEに関する部分と、元ファイルのパスのように見える
のですけれど。。(バイナリエディタで調べてみては?)

>>927
テーブルにキーが設定されていればキー順に表示されますけど?
929918:03/01/24 16:23
>>928
なるほど、そういうわけですか。
解析して取り除くしか方法はないのか・・・実現は厳しそうですね・・・。
ともかく、ありがとうございました m(__)m
930名無しさん@そうだ選挙にいこう:03/01/24 20:34
>>927
RDBMSの基本から勉強したほうが良いよ。
☆★▼▽▲△●○■□◆◇◇◆□■○●△▲▽▼★☆

今月もお小遣いすくなってきたよ・・・トホホ。
そんなあなたにこのサイト!!あなたのお小遣いを
1円でも多くして見せます!!
損はさせません!!早速アクセスをどうぞ!
↓   ↓   ↓
http://finito-web.com/kanemou/index.html

☆★▼▽▲△●○■□◆◇◇◆□■○●△▲▽▼★☆
932名無しさん@そうだ選挙にいこう:03/01/25 15:45
97で作られたのを95に作り直すよう言われ、
フリーソフトで変換させ、フォーム以外はいけたのですが…

品番を入れボタンを押すと、画像のみ(フォーム内にでななく)表示するというものが
ハイパーリンクでつくられたようなのですが、
95ではハイパーリンクができないようでどうしたらいいか困っています。
ちなみに画像ファイルはjpgやgifで7000枚くらいあります…
933名無し@どっとこむ:03/01/25 15:47
>>932
>フォーム内にでななく
の部分が「フォーム内ではなく」の間違いだとしても、どういう風に表示されるか
分からない。
JpgやGifの開けるソフト(IrfanViewあたり)入れて、Shellでそのアプリで開いたらどうかしら。
見当違いの回答だったらスマソ。
safariって何だよ
938917:03/01/26 09:03
>>922
IMEとは別だったんですね・・・。
できました。ありがとうございました!
939名無しさん@そうだ選挙にいこう:03/01/26 09:57
最近、ACCESS2000の動きが遅い。ローカルで動かすとふつうなんだけど、
ネットワーク上で、大きい(数百MB)MDBファイルとリンクしたものは極端に重くなっている。
今月のある日突然発生している。何か知っている人いたら教えて。
940YAMA:03/01/26 10:39
当方、一太郎を使っていますが、ワードで作成した文書、拡張子DOCを
開くと文字化けしてしまいます。
DOCをワードパッドでも読めるTEXTタイプに変換するソフトは無いでしょうか。
942名無しさん@そうだ選挙にいこう:03/01/26 11:36
>>939
まさかとは思うが、最適化はしてるだろうな?
なんてこったい
俺のプロバ、荒らしのせいでこの板にACCESS規制されちまったYO!
944939:03/01/26 20:12
>>942
最適化すると少しは早くなるけど、すぐに遅くなる。
以前は最適化は月1回するくらいだったけど、その日以来毎日数回やっている状態。
>>944
同じフォーマットのテーブル作って必要な分のデータだけインポートして抜いて最適化。
データ減らせば良いならこの手法か。
>>944
あとはハブの不調とか。可能ならサーバもリブート。(違うかな…)
一番重要なのは「今月のある日」に何があったか調べること。
947939:03/01/26 23:25
>>945
>>946
レスどうもありがと。サーバのリブートは試したけど無駄でした。
ハブやネットワークインターフェイスボード関係の不調かなと思ったけど、
ルーター超えているのが気になる。ハブの障害ってルータ超えることあるのかな?
ひょっとしたら、例のワームって関係ある?
94883 ぱんでものーと:03/01/26 23:36
SQL鯖2000がネットワークのどこかににいるなら
949939:03/01/26 23:50
>>948
SQL2000鯖とMSDEが複数。
ってことはやっぱワームか。
>>949
SQL2000ServerかMSDE2000が入ったPCから
直接インターネットに接続してるとやばい
ルータを経由したりしてると大丈夫
951918:03/01/27 10:15
>>918の質問をした者です。
皆様のご協力のおかげで、無事解決いたしました。
VBスレの下記部分に解決したソースを掲載しましたので(かなり汚い&力技ですが)
興味のある方はごらんください。
本当にありがとうございました。
http://pc3.2ch.net/test/read.cgi/tech/1041879465/778-779
952928:03/01/27 13:38
>>951
おお!付加情報を"8BPS"を元に取り除いたんだね。
解決して良かったっす。
953918:03/01/27 15:25
>>952
そのとおりです。928さんから教えてもらった情報をVBスレで報告したら
OLE情報を取り除くサンプルのレスをいただいて、それを参考にして
最終的にこの方法に至りました。
画像のビット数が違う場合は有効じゃないと思う、我ながら汚くて強引な
やり方なんですが、とりあえず今回のケースではデータ取り出しに成功したので、
結果オーライですw
いろいろありがとうございました m(__)m
954名無しさん@そうだ選挙にいこう:03/01/28 11:09
Access97のフォームから、参照設定入れて、Excelを開いています。
Excelが開ききった(処理が終了した)時点で、Accessを前面にもってきたいのですが、
どうしたら良いでしょうか。
955名無しさん@そうだ選挙にいこう:03/01/28 15:22
ボタンでサブフォームの中身を別のフォームに入れ替える方法を教えてください。
956名無しさん@そうだ選挙にいこう:03/01/28 17:55
はじめまして。
最近、アクセスを仕事でさわるようになって興味を持ったのですが、
本当にクエリーで一個一個条件入れて、必要なデーターを出す程度のことしかできなくて・・・
ここんも掲示板のみなさんのレベルも「雲の上の話」、始めはどうやってみなさん勉強したんでしょうか?
初心者に本当にお薦めのHPを知ってる方などいれば教えていただけませんでしょうか。
>>954
AppActivate
>>956
本を買え
>956
私はサブフォームをそれぞれのクエリー等に対して作って
(↑それぞれ出力するフィールド数等がまったく違う場合)
ボタン(仮にbtn_data、フォームはF_Form、F_Formに埋め込んだサブフォームをsubform、
各クエリーのサブフォームをsub_A、sub_Bとする)をある条件に従い押下した時に

btn_data押下時の分岐条件の指定
Forms!F_main!subform.SourceObject = "sub_A(あるいはsub_B)"

としています。
同じことをコントロールボックスの値やクエリーの切り替えに応用できます。
*****コントロールボックスの値の切り替え
Forms!F_main![コントロールボックス名].RowSourceType = "Value List"
Forms!F_main![コントロールボックス名].RowSource = "1;値A;2;値B;3;値C"
※この場合、プロパティで値リストを指定しておく
*****コントロールボックスのクエリーの切り替え
Forms!F_main![コントロールボックス名].RowSource = "[クエリー名]"
※この場合、プロパティでテーブル/クエリーを指定しておく

と言うようなことで、如何でしょうか?
960959:03/01/28 18:26
す、す、すいません…>>959は>955さんへでした
961名無しさん@そうだ選挙にいこう:03/01/29 02:12
スキャナで画像を読み取ると、自動的に、画像が保存され、しかも、自動的に、タイトル情報入力フォーム(登録された画像が取り込まれている)が開くようにしたいです。
画像をあらかじめ保存しておいて、その後に手動で、入力フォームで取り込む方法はわかるのですが、スキャナとアクセスを連動させるとなると、わかりません。
お知恵をお貸しいただければ幸いです。
ビジネス用に各社からファイリングソフトが出ていますが、自分の場合は簡単なものでよいので、アクセスで組めればと思っています。
962名無しさん@そうだ選挙にいこう:03/01/29 06:51
>>961
Newton(だったかな?)という会社のImageKitというソフトを買って下さい。
というか、スキャニングした画像を選択させる方式で良いと思うがなぁ。
API使ってファイル選択ダイアログ出せば、年寄りでも出来るだろうに。
963名無しさん@そうだ選挙にいこう:03/01/29 19:50
フォームをテーブルに連結させている時、
コンボボックスのリスト部分開いている時にマウスのホイール廻すと、
次のレコードを表示するのですが、この機能を止めて、コンボボックスの
リスト部分に付いているスクロールバーをスクロールさせたいのですが、
どこをいじったら良いでしょうか。
964名無しさん@そうだ選挙にいこう:03/01/29 23:28
access2000を使っています。
毎日500件位のデータが、エクセルで開くCSVファイル
で送られてきます。それをアクセスにインポートするのに
現在、一度CSVファイルを開き、上の2行が不要ですので削除して
一度保存し、それからインポートウイザードで3行目を
フィールド名にしてインポートしています。
これをもっと短い手順でするにはどうしたらいいのでしょうか?

965名無しさん@そうだ選挙にいこう :03/01/30 05:02
>>964

VBA使えないのか?
966名無しさん@そうだ選挙にいこう:03/01/30 08:04
>>964
VBA書けば簡単。ガンガレ!
967名無しさん@そうだ選挙にいこう:03/01/30 09:00
>>964
Private Sub InportCSV()
Dim InputFileNum, OutputFileNum As Integer
Dim wStr As String
Dim i As Long
'インポートファイル
InputFileNUM = FreeFile
Open "C:\FullPath\InportFile.CSV" For Input As #InputFileNum
'ワークファイル
OutputFileNum = FreeFile
Open "C:\FullPath\WorkFile.CSV" For Output As #OutputFileNUM
'インポートファイルから2行削除したワークファイルを作る
i = 0
Do While Not EOF(InputFileNUM)
i = i + 1
Line Input #InputFileNUM, wStr
If i > 2 Then
Print #OutputFileNUM, wStr
End If
Loop
Close #InputFileNUM
Close #OutputFileNUM
'ワークファイルからインポート
DoCmd.TransferText acImportDelim, , "出力テーブル名", "C:\FillPath\WorkFile.CSV", True
End Sub
969名無しさん@そうだ選挙にいこう:03/01/30 13:48
>>956
魔法使いとかT's

ぐぐれば出てくると思う
970名無しさん@そうだ選挙にいこう:03/01/30 14:09
>968
便乗して質問。
そういうときで、csvが複数あるときのファイル名の指定の仕方がわからないんですが。

DoCmd.TransferText acImportDelim, , "出力テーブル名", "C:\FillPath\WorkFile.CSV", True

¥WorkFile.CSVの部分なんですが。
>>970
Microsoft Common Dialog Control を使う。
フォームのデザインで挿入(I) →ActiveXコントロール(C)として
リストから選択するとフォーム上に作られる。
こいつを使えば、よく見かける「ファイルを開く」操作ができる。
972964:03/01/30 22:02
>>968,966,965
レスありがとうございます。VBAは全然わかりませんので
これから勉強していきます。今はマクロすらよく分かってないので
時間かかると思いますが…。968さんの教えてくれたのができるように
がんばります。
>>972
マァガンガレ('A`)
974970:03/01/31 00:02
アクションボタン一発でやるのって無理なんですか?
フォルダ内に
111.CSV、222.CSV、333.CSV・・・・・
とあるのをフォルダは変数myfolderにパス格納してcsvファイル名をDir関数で取得して
myfile変数に入れる
あとはループ処理で、myfileが空になるまで

DoCmd.TransferText acImportDelim, "出力テーブル名", "C:\FillPath\111.CSV", True

で、\111.CSVのとこにmyfileってやったけどエラーになるし。

ループ処理でやらないで、一つ一つ書くしかないんでしょうか?
>974
同一フォルダ内のcsvファイル全部を順に処理するってことかしら?
ループ処理はあってるのかな?
同一出力テーブル名になってエラーが起こってないかな?
csvファイルをどんどん取り込んで行くと言うことは別のテーブル名で保存するか、
同一テーブルに追加していくことだと思うけど…その辺はどうなってるんだろう?
追加だとすると、フィールド数とかデータ型はあってるのかな?

あと、以前同じようにファイル名を所得して…という処理をしたことがあったけど
(Ac97だったから、今でもそうかどうかは不明)、Dir関数では処理が早過ぎるのか
暴走するような感じでエラーが起こるらしく、GetFileNameと言う関数を作って使用
したことがある。どこかのHPにあったのを探し出して作ったよ。
それ以来、私はあまりDir関数を使わない…直接、フルパスを取得するようにしてる。

参考になるかな?
976名無しさん@そうだ選挙にいこう:03/01/31 03:53
                \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )<  2月2日 13:00
                 \_/   \_________
                / │ \
                    ∩ ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< 梅田丸ビルの電光掲示板に…
『(゚д゚)ウマー』!!!  >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」
               ̄     / /
                    ̄
http://life2.2ch.net/test/read.cgi/offreg/1043075025/l50
977名無しさん@そうだ選挙にいこう:03/01/31 09:29
>>974
これはどう?
Function FolderMemberImport()
Dim PathName As String
Dim FileName As String
PathName = "C:\My Documents\"
FileName = Dir(PathName & "File*.CSV")
Do While FileName <> ""
DoCmd.TransferText acImportDelim, "インポート定義", "インポート先テーブル名", PathName & FileName, False, ""
FileName = Dir
Loop
End Function
978974:03/01/31 09:46
同一フォルダ内のcsvファイル全部を順に処理します。アクセス97です。
CSV2個でテストしてます。
  Dim MyFolder As String
Dim MyFile As String
MyFolder = "C:\フォルダ゚
MyFile = Dir(MyFolder & "*.csv")

Do While MyFile <> ""
MsgBox MyFile ’チェック
DoCmd.TransferText acImportDelim, "インポート定義", "テーブル", "C:\フォルダ\MyFile"
MyFile = Dir()
Loop

ファイル名を一個具体的に書いたらきちんといくんですが上の書き方だとMSJTER35を開けませんになります。
出力テーブルのレコードは普通下にどんどん追加されていくものではないんですか?追加の記述がいるんでしょうか?
979名無しさん@そうだ選挙にいこう:03/01/31 09:58
980974:03/01/31 10:02
>977
すいませんレスに気づいてなくて
PathName & FileNameの書き方でできました
>975 977 ありがとうございました
981名無しさん@そうだ選挙にいこう:03/01/31 15:31
Win98/Me/Xp Access97環境下で・・・
CurrentUserでユーザーレベルの切り分けをしています。
例えばフォームに「仕入原価」があったとして、
ユーザーレベルにより、表示の可視:不可視を切り替えているのですが、
該当個所が複数になると、いちいち設定するのが面倒なので、
「タグプロパティ」が使えないかなぁ?と考えています。

具体的には、フォーム中の複数のコントロールをまとめて、
タグで「A;B;C」のレベルを設定しておき、
Form_Load の時に、CurrentUser により、どのタググループは
表示させない・・・って事がしたいのですが。。。無理でしょうか?
>>981
タグ自体が1つの塊なので無理っぽい気がしますが
よく分からないのでsage
>>981
Visibleプロパティで出来るのでは?
今、ひとつのタブをクリックしてプロパティを可視をいいえにしたら
そのタブだけ消えた…って自分で試せる程度のことじゃないの?
新スレッド建てました
ACCESS総合相談所 その7
http://pc2.2ch.net/test/read.cgi/bsoft/1037856185/l50
申し訳ない間違えてしまいました

ACCESS総合相談所 その7
http://pc2.2ch.net/test/read.cgi/bsoft/1043996834/
986名無しさん@そうだ選挙にいこう:03/02/01 00:20
1000!
>>981
こういうこと?

Private Sub Form_Load()
 Dim LevelString as String
 Dim ctr as Control

 LevelString = "CurrentUserと結びつけた文字"

 For Each ctr In Me.Controls
  ' 結びつけた文字がコントロールのタグに設定されていれば可視
  If ctr.Tag = LevelString Then
   ctr.Visible = True
  Else
   ctr.Visible = False
  End If
 Next
 
End Sub
>>975
> Dir関数では処理が早過ぎるのか暴走するような感じでエラーが起こるらしく、

99.9% あなたのバグ。