Access VBA質問箱 IV

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

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


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

【4145】ありがとうございました。
お礼  mujahideen  - 05/1/14(金) 11:06 -

引用なし
パスワード
   できました。あとはエクセルの件なので、そちらへいって聞きます。
・ツリー全体表示

【4144】Re:テーブルの有無を調べる方法?
回答  Gin_II  - 05/1/14(金) 11:00 -

引用なし
パスワード
   >ファイルの有無は Dir関数で出来ると思いますが
>同じようにテーブルの有無を調べる方法はありませんか?

mdbファイルであれば、

If DCount("*","MSysObjects","Name='xxx'") > 0 Then
  '存在する
Else
  '存在しない
End If

でどうでしょうか?
・ツリー全体表示

【4143】テーブルの有無を調べる方法?
質問  山田  - 05/1/14(金) 10:55 -

引用なし
パスワード
   ファイルの有無は Dir関数で出来ると思いますが
同じようにテーブルの有無を調べる方法はありませんか?
教えてください。
・ツリー全体表示

【4142】Re:ADOのレコードセットをフォーム(一覧...
発言  みほ  - 05/1/13(木) 23:17 -

引用なし
パスワード
   だらだら感想めいたものを書いてしまいました。

>>(かろちんさん、いつもありがとうございます)
> お気遣いありがとうございます。
> でも、これを書くのは止めた方が良いと思います。
> 優秀な回答者よりレスが来なくなる原因になるかも
> しれません。
> これを書くなら、その人からレスがきたときに書く
> 方が良いですよ。
なるほど、です。

>>処理を汎用性のあるコード(アクセス以外に移行可能)で
>>書きたい。ということです。それにはADOで処理するのがよい、
>>と聞きかじったので、チャレンジしてみました。
> これはどうでしょう?
> アクセス以外といっても、VBやExcelなどなど?
> ADOをサポートしている言語?
強いて言えば、VBライクな書き方をしておきたい
といった感じでしょうか。自分としても以前VBぽい雰囲気の
あるツール(もうちょっとDBまわりが充実してた)を
使っていたので、ベタベタのアクセスの
作り方よりもVBライクに作ったほうが作りやすい気もしたのです。
VB知らないのに無謀かなあ・・・。

> SQLが分かるのであれば、RecordCountを使わずに
> strSQL = ""
> strSQL = strSQL & "SELECT COUNT(*) As 件数 FROM テーブルA"
> strSQL = strSQL & " WHERE ID=5"
> rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic
> MsgBox rs("件数")
> で件数を調べた方が良いです。
了解です。

ADOですが、調べたところ私の使ってるAccess2000
(また書き忘れてました。ごめんなさい)では
フォームとの連動で、更新処理などができないということのようですね。
検索画面では使えても更新画面では使えないのでは
なんだか中途半端でかえって使わないほうがよいのかなあ
と思ったりもしています。

私が作成中のシステム自体は、わりと単純なものなのですが
同じ動作をするものでも、色々な作り方があって迷ってしまいます。
なるべくメンテナンスが楽で、次に生かせるようなものを作りたいと思う
んですけどね。あと、accessでいい感じのプログラムがバリバリ組める人が見て、
「ナニコレ、意味わかんない。こんなんでよく動くよなー」
なんて思われないようなものがいいです。
実力の割に"かっこつけしい"かなあ。。
・ツリー全体表示

【4141】Re:帳票フォームから単票フォームを開くに...
お礼  ゆき  - 05/1/13(木) 17:03 -

引用なし
パスワード
   ありがとうございます、出来ました!
・ツリー全体表示

【4140】Re:帳票フォームから単票フォームを開くに...
回答  クロ  - 05/1/13(木) 16:33 -

引用なし
パスワード
   テキストボックス「学籍番号」のダブルクリック時のイベントにコードで

Docmd.OpenForm "単票フォーム名",,,"[学籍番号]=" & Me.学籍番号

でよいかと...
※学籍番号がテキスト型なら

Docmd.OpenForm "単票フォーム名",,,"[学籍番号]='" & Me.学籍番号 & "'"
・ツリー全体表示

【4139】Re:自動更新って
お礼  アク初心者  - 05/1/13(木) 16:30 -

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

かろちんさんありがとうございます。
色々試して、考えて見ます。

また、質問した時は宜しくお願いします。
・ツリー全体表示

【4138】帳票フォームから単票フォームを開くには
質問  ゆき  - 05/1/13(木) 16:04 -

引用なし
パスワード
   こんにちは
今学校に勤めていて、学生管理フォームを作っているのですが、帳票フォームの「学籍番号」をダブルクリックすると単票フォームの学生情報が抽出されて開かれるにはどの様にしたら良いですか。
マクロで [学籍番号]=[Forms]![F_学生管理]![学籍番号] と入力したのですが、何も入力されていないフォームが開かれるだけです。
・ツリー全体表示

【4137】Re:インポートでなく、追加貼り付け
回答  クロ  - 05/1/13(木) 13:52 -

引用なし
パスワード
   TransferSpreadsheetのTableName引数にインポート先テーブルでなく
クエリで抽出してフィールド(選択した5列)を指定してみてはどうですか?
・ツリー全体表示

【4136】インポートでなく、追加貼り付け
質問  ひろのしま  - 05/1/13(木) 13:08 -

引用なし
パスワード
   すみません、質問いたします。
アクセステーブルに指定されたエクセルのセル範囲をインポートする場合、
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9,
"テーブル名",
"パス付きエクセルファイル名",False,
"エクセルシート名!"
"指定されたセル範囲"

のコマンドで行います。ですが、私が行おうとしている作業で、インポートされる側のテーブルの7列のうちの5列を選択して
エクセルの指定5列を追加貼り付けを行うという作用を行わなければなりません。
つまり、テーブルを表示する場合のコマンドですと、
  with Docmd
  .OpenTable "事象パターンマスタ", acViewNormal, acEdit 'テーブル表示
  'ここで、列を選択するコマンドを記述する
  .RunCommand acCmdPasteAppend '追加貼付
  end with
となりますが、この作業をテーブルを見せずにVBAコマンド上で行いたいのです。
どうか、よきアドバイスをお願いします。
・ツリー全体表示

【4135】Re:エクセルとつなげることは可能ですか。
回答  にしもり  - 05/1/13(木) 10:23 -

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

>エクセルの値を変えると、アクセスのクエリの値も変えるのはできますが、
>その逆は可能でしょうか?

私も初心者の域を出ないのですが、このサイトに何度も助けられていますので参考になればと思い投稿します。Accessのテーブル作成クエリで作ったテーブルを、Excelに反映することはできると思います。Excelの「データ」「外部データの取り込み」「データの取り込み」を押します。「データファイルの選択」で、先に作ったMDBを指定し、「表の選択」でテーブルを指定します。「データのインポート」で既存のワークシートにチェックをします。「プロパティ」をクリックし「フィールド名を含む」のチェックをはずし、「列の幅を調整する」のチェックをはずし、OKを押します。「データのインポート」にもどったらOKを押します。データを更新するには、「データ」「データの更新」を押すと自動更新されると思います
・ツリー全体表示

【4134】Re:ADOのレコードセットをフォーム(一覧...
回答  かろちん  - 05/1/13(木) 0:31 -

引用なし
パスワード
   みほ さん こんばんは

>(かろちんさん、いつもありがとうございます)

 お気遣いありがとうございます。
 でも、これを書くのは止めた方が良いと思います。
 優秀な回答者よりレスが来なくなる原因になるかも
 しれません。
 これを書くなら、その人からレスがきたときに書く
 方が良いですよ。

>実行すると、ケース1のRecordCountは1になり、ケース2のRecordCountは10
>になるのですが、フォームに表示されるのは、ケース1も2も10件で
>ケース1の場合は、ID=5がカレントレコードになるだけです。
>RecordCountでチェックするとちゃんと件数が変わっているので
>フィルタできているとは思うのですが、どうしてこうなってしまうのか・・・。

 ADOでRecordCountを使ったことがないので良く
 分かりませんが、私は基本的にRecordCountは
 使わないようにしています。
 以前、DAOで開発を行った時、同じような現象が
 起きました。
 いろいろ調べてみましたが、RecordCountは不定
 であると判断しました。

 例えば10万件位のデータを抽出するとしましょう
 RecordCountで抽出件数を判断させようとした場合
 10万件のデータを抽出しないと分かりませんよね
 そうすると、かなりの時間がかかってしまいます。
 ある程度のデータが抽出された時点で、Open処理
 を終わってくれれば、途中まで抽出したデータを
 先に処理できますよね。
 この方法を取っているのだと思います。
 したがって、RecordCountはレコード件数を判断
 するときには使わない方が良いのだと判断し、
 それ以来は使っていません。

 でも最後のレコードを抽出した後は、RecordCount
 は正しい結果が返ってきていると思います。
 でも、その時点で使えるかどうかは疑問ですが...


>処理を汎用性のあるコード(アクセス以外に移行可能)で
>書きたい。ということです。それにはADOで処理するのがよい、
>と聞きかじったので、チャレンジしてみました。

 これはどうでしょう?
 アクセス以外といっても、VBやExcelなどなど?
 ADOをサポートしている言語?
 言語が変われば若干書き方が変わってきたりするん
 ですよ。そうすると使えるところは、SQLだけって
 いうことになってしまうケースが多々あります。

 移行可能な方法があれは、私も教えてほしいです。

>SQL(Oracle)はわかるのですが、VB等の知識がなく(Accessも初心者)
>悪戦苦闘しています。

 SQLが分かるのであれば、RecordCountを使わずに

 strSQL = ""
 strSQL = strSQL & "SELECT COUNT(*) As 件数 FROM テーブルA"
 strSQL = strSQL & " WHERE ID=5"
 rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic

 MsgBox rs("件数")

 で件数を調べた方が良いです。
・ツリー全体表示

【4133】Re:自動更新って
回答  かろちん  - 05/1/12(水) 22:30 -

引用なし
パスワード
   アク初心者 さん こんばんは

>>1)クライアント起動時にサーバーより最新のMDBを取り込む

 MDBコピー用バッチファイルを作成し、スタートアップ
 に入れておく

 ファイル名:MDBCOPY.BAT

 @echo off
 COPY コピー元パス名 コピー先パス名


>>2)ツールを作成し最新を取り込む

 ごめんなさい、これはフリーのツールを使用するの
 間違いです。
 ネット検索で、フリーのツールを検索してみてください。
・ツリー全体表示

【4132】Re:自動更新って
質問  アク初心者  - 05/1/12(水) 19:18 -

引用なし
パスワード
   こんばんは。

>1)クライアント起動時にサーバーより最新のMDBを取り込む
>2)ツールを作成し最新を取り込む
>等があると思います。

上記の件
1)の方法
2)の方法(何で作成するのか?)
もし宜しければ教えてください。
お願いします。
・ツリー全体表示

【4131】ADOのレコードセットをフォーム(一覧)に...
質問  みほ  - 05/1/12(水) 19:09 -

引用なし
パスワード
   いつもお世話になっています。(かろちんさん、いつもありがとうございます)

ADOを使ってフォームにデータ一覧を表示させたいと思い、
以下のコードをフォームのOpenイベントに書いています。
ケース1)
  rs.Open "テーブルA", cn, adOpenKeyset, adLockOptimistic
  rs.Filter = "ID = 5"
  MsgBox (rs.RecordCount)
  Set Me.Recordset = rs
ケース2)
  rs.Open "テーブルA", cn, adOpenKeyset, adLockOptimistic
  MsgBox (rs.RecordCount)
  Set Me.Recordset = rs

実行すると、ケース1のRecordCountは1になり、ケース2のRecordCountは10
になるのですが、フォームに表示されるのは、ケース1も2も10件で
ケース1の場合は、ID=5がカレントレコードになるだけです。
RecordCountでチェックするとちゃんと件数が変わっているので
フィルタできているとは思うのですが、どうしてこうなってしまうのか・・・。

そもそもがこういった使い方はイレギュラーなのか。。

やりたいことは、
「検索条件を入れて検索ボタンをクリックすると該当するデータの一覧が
表示される」処理を汎用性のあるコード(アクセス以外に移行可能)で
書きたい。ということです。それにはADOで処理するのがよい、
と聞きかじったので、チャレンジしてみました。
SQL(Oracle)はわかるのですが、VB等の知識がなく(Accessも初心者)
悪戦苦闘しています。

ご教授よろしくおねがいいたします。
・ツリー全体表示

【4130】エクセルとつなげることは可能ですか。
質問  mujahideen  - 05/1/12(水) 14:41 -

引用なし
パスワード
   アクサス超初心者です。
エクセルの値を変えると、アクセスのクエリの値も変えるのはできますが、
その逆は可能でしょうか?

御分かりになる方よろしくご教示下さい。
・ツリー全体表示

【4129】Re:リンク先を張りなおすとクエリーが動か...
お礼  山田  - 05/1/12(水) 13:34 -

引用なし
パスワード
   ▼クロ さん:
>http://www.ruriplus.com/msaccess/tch/tch_040.html
>こちらを参考にしてみては?


有難うございます。
よくわかりました。

ほんとに助かりました。
・ツリー全体表示

【4128】Re:リンク先を張りなおすとクエリーが動か...
発言  クロ  - 05/1/12(水) 13:19 -

引用なし
パスワード
   http://www.ruriplus.com/msaccess/tch/tch_040.html
こちらを参考にしてみては?
・ツリー全体表示

【4127】Re:リンク先を張りなおすとクエリーが動か...
お礼  山田  - 05/1/12(水) 13:06 -

引用なし
パスワード
   ▼クロ さん:
>※ cLincDelim は acLinkDelim ですよ。転記ミスだと思うけど...
>
>簡単なのはリンク定義でFをフィールド1にするようにしておいて
>保存し、SpecificationNameに指定してあげてください。
>
>DoCmd.TransferText acLinkDelim, "リンク定義名", "T_LinkTable", LinkFile


有難うございます。
定義そのものをVBAで指定する方法は無いのでしょうか?
・ツリー全体表示

【4126】ありがとうございます。
お礼  ゴン太  - 05/1/12(水) 12:06 -

引用なし
パスワード
   上手くできました。
勉強不足で・・・・

また、ありましたらよろしくお願いします。
・ツリー全体表示

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