Access VBA質問箱 IV

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

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


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

【10969】Re:日時を日のみにし、かつ、カウントす...
回答  ON  - 09/1/31(土) 19:28 -

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

とりあえず下記SQL(クエリのSQLビューに記載)

SELECT Format([テーブル1]![日時],"d") AS 日, Count(Format([テーブル1]![日時],"yyyymmdd")) AS カウント
FROM テーブル1
GROUP BY Format([テーブル1]![日時],"d");



日    カウント
5    1
6    2
7    3

と出来ました
・ツリー全体表示

【10968】テーブルの更新?方法
質問  ON  - 09/1/31(土) 15:14 -

引用なし
パスワード
   こんにちは わかりにくいと思いますが、よろしくお願いいたします

場所AのMDBと場所BのMDBのテーブルのDTを同じにしたいと思っています
以前は、TBLのみのMDBをコピーして同じにしていました
今回は
更新日時ファールドを追加して、これを元に、
 更新レコードの置き換え
 追加レコードの追加
したいと思っています

構成は
 レコードのみのMDBが1つ R-MDB
 フォーム系のMDBが1つ F-MDB

R-MDBには
 ・DT_TBL が1つ
 ・add_TBL が1つ(更新レコード、追加レコードのみ:更新日時Fで抽出作成)
F-MDBでは、上記のTBLをリンクして使用しています

運用方法は
レコード編集追加は、場所Aと場所Bで行っているので
add_TBLのみを持ち運んでTBLの同期?を行いたいと思っています

処理方法としては
 1)DT_TBLとadd_TBLで、IDフィールドが一致したレコードで
   DT_TBLから、上記レコードを削除
 2)DT_TBLにadd_TBLを追加
でいいような気がします

で、
1)削除クエリを実行し
DELETE DT_TBL.*
FROM DT_TBL INNER JOIN add_TBL ON DT_TBL.[No] = add_TBL.[No];

2)追加クエリを実行する
INSERT INTO DT_TBL
SELECT add_TBL.*
FROM add_TBL;

でいいような気がしています

上記について
Q1)このクエリは、R-MDB、F-MDB どちらのMDBにおいて実行したほうがよいのでしょうか
  どちらでもかまわないような気もしますがちょっと気になります

Q2)削除、追加のアクションクエリを1つの
SQLつで実行するようなことは出来ますか

その他、アドバイスありましたらよろしくお願いいたします
・ツリー全体表示

【10967】日時を日のみにし、かつ、カウントするに...
質問  にしもり  - 09/1/30(金) 20:45 -

引用なし
パスワード
   こんにちは。
日時というフィールドに、

2009/01/05 09:28:34
2009/01/05 10:22:15
2009/01/06 11:09:05
2009/01/06 15:40:46
2009/01/07 12:04:45
2009/01/07 14:02:13
2009/01/07 17:47:06

という具合に300レコードほどあります。

これを
日のみ表示 カウント
2009/01/05   2
2009/01/06   2
2009/01/07   3

といふうにするクエリはどうすればできるでしょうか。
一発では無理でしょうか。
・ツリー全体表示

【10966】Re:エクセルへのエクスポートについて
質問  たか  - 09/1/28(水) 21:48 -

引用なし
パスワード
   ▼パルメトラ さん:
ありがとうございました。
お礼が遅くなり申し訳ありません。

Formatで「\」マークは出力されるようになりました。
ただ、文字列になってしまうため、Excelでは左寄せになってしまいます。
さらに、Excelのセルのエラーチェックが出てしまいます。

「\」マークつきで通貨型で出力することはできないでしょうか?
やはり、AccessからExcelを編集するしかないですかね。

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

【10965】Re:エクセルへのエクスポートについて
発言  パルメトラ  - 09/1/27(火) 11:40 -

引用なし
パスワード
   ▼たか さん:
クエリーのフィールドを、Format関数で書式を整えてから
出力してみてはどうでしょう。

できなかったらごめんなさい。
・ツリー全体表示

【10964】エクセルへのエクスポートについて
質問  たか  - 09/1/26(月) 20:16 -

引用なし
パスワード
   現在、Accessのバージョンアップを行っています。
OS:Win2K Access2000

OS:WinXP Access2007

あるクエリーをExcelへエクスポートしているのですが、
Access2000では、金額項目に「\」マークが出力されていたのですが、
Access2007では、「\」マークが出力されません。
エクスポートするクエリーのデータには「\」マークが付いてます。

※該当ソース--------------------------------------------------------------
DoCmd.TransferSpreadsheet acExport, 8, "上期集計クエリー名", "C:\集計.xls", True
DoCmd.TransferSpreadsheet acExport, 8, "下期集計クエリー名", "C:\集計.xls", True
-------------------------------------------------------------------------

DoCmd.OutputToでエクスポートすれば、書式も一緒に出力されるのですが、
集計.xlsにシート別に上期と下期を出力したいのです。

お分かりになる方がいらっしゃいましたら、ご教授お願い致します。
・ツリー全体表示

【10962】Re:エクセルからアクセスへAddNewで
お礼  ON  - 09/1/26(月) 16:15 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは ありがとうございます
遅くなりました m(_ _)m

>DAO で記述されている場合は
>AddNew で排他処理が行われ、Updateで排他が解除されます。
なるほどです
同時アクセス時に体感的に感じていたことですが
仕組みの理解の無いままでした

 エラーの検証方法
 エラー処理方法

勉強になりました
ありがとうございました


>運用面を含め改善する事が可能であれば

>Access側から各Excelを総なめするようなコードの方が
>無難なのではないかと思われます。

真逆のアプローチの紹介ありがとうございます
確かに、アクセスで破損の恐れは皆無な処理と思います


いまさらながらですが、やはり、
>neptune さんのご回答にあるように SQLServer を使用するのであれば
>同時にデータの追加をしてもServer側で制御してくれるのですが、
がベストな気がします


SQLServerについては、何とかものにしたいと思っているのですが
なかなか環境も整えられず手が出せないままで、
我ながら、”なんだかな・・・" の状態となっています

この状態を何とか打破せねば・・・


書き込みありがとうございました


今後もよろしくお願い致します
・ツリー全体表示

【10961】Re:帳票フォームでレコード絞込み(ADO)
お礼  眠眠  - 09/1/26(月) 10:30 -

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

解決です。
スナップショットの存在を忘れておりました。
わざわざダイナセットにしてました(汗

>> そのプロシージャでRSを作成して編集するため
>ということと、フォームにADOのレコートセットをセットすることに
>どのような関連があるのでしょうか。

DB読取で開くには、更新の許可等を全て「いいえ」にしないと
できないと思い込んでいたせいです。
→だからRSを作成しないと無理?と…。

まだまだ課題が多く、また質問させてもらうことがあるかと思いますが、
宜しくお願いいたします。
・ツリー全体表示

【10960】Re:ファイルの作成について
お礼  まる  - 09/1/24(土) 17:22 -

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

拝承致しました。

他の所で調べてみます。
・ツリー全体表示

【10959】Re:複数バージョンが共存する中で特定の...
発言  YU-TANG  - 09/1/24(土) 15:56 -

引用なし
パスワード
   小僧さんが上げるまでスレに気づかなかった YU-TANG です。

> このようにVBAを実行すると、Shellで作成した新規のエクセルファイル(excel2000)ではなく、今開いてるexcel全て(excel2007を含む)のうち、一番最初に開いているexcelシートに書き込みがされてしまいます。
> Shellで作成した新規のエクセルファイルに書き込みをするにはどのようにしたらよいのでしょうか。

逆じゃダメですか?
先に新規ブックをどっかに作ってしまって、そいつを Shell で Excel 2000 に
開かせたら、GetObject で Excel 2000 のインスタンスを取れませんかね。
混在環境ないので試していませんが。

まあ ROT から取るのが正攻法なんでしょうけど、面倒っちいんでパス。
・ツリー全体表示

【10958】Re:ファイルの作成について
回答  小僧  - 09/1/24(土) 14:06 -

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

こんにちは。

まず、画面上部の

>本サイトの基本方針をまとめました。こちら をご一読ください。

の こちら のリンク先をお読みになって下さい。

> してはいけない質問について

の 丸投げに相当していませんか?


>C:\ABCフォルダー内に「ABC.xls」の空ファイルを作成。

「CreateObject」「Excel」をキーワードに
Google等の検索エンジンを使ってみると
色々な事例が出てくると思われます。

それでもお解かりにならなかった場合、
再度ご質問をされてみてはいかがでしょうか。
・ツリー全体表示

【10957】ファイルの作成について
質問  まる  - 09/1/24(土) 10:39 -

引用なし
パスワード
   よろしくお願いします。

C:\のあるフォルダー内にACCESSのフォーム上から
ファイルを作成することは可能でしょうか。

例)
C:\ABCフォルダー内に「ABC.xls」の空ファイルを作成。

テキストボックスにファイル名を指定し、ボタンを押すと
フォルダー内にファイルが作成されるようにしたいのですが、
やり方がわかりません。

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

【10956】Re:Dir関数について
お礼  VB  - 09/1/24(土) 10:33 -

引用なし
パスワード
   ▼超初心者 さん:

できる様になりました!
ご指導ありがとう御座いました。
・ツリー全体表示

【10955】Re:Dir関数について
発言  超初心者  - 09/1/23(金) 19:40 -

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

> Dim TextBox1 As String
> Dim strNo As String

> 'テキストボックスの値
> strNo = TextBox1

どちらも初期値は "" なので、この処理は、
特に何もしていないのと同義かと思います。

フォーム上のテキストボックスの名前が「TextBox1」であるならば、
> strNo = TextBox1
 strNo = Me.TextBox1.Value

> Dim TextBox1 As String --> 削除?
(他に使用しているのであれば、名称変更した方が混乱しないかも)

こんなところでしょうか

他にもあるかもしれませんが、とりあえず1点まで。
・ツリー全体表示

【10954】Re:Dir関数について
発言  VB  - 09/1/23(金) 18:35 -

引用なし
パスワード
   ▼超初心者 さん:

ご連絡ありがとう御座いました。

私、初心者であまりコードが分からないのですが
下記コードを作って見ましたが、うまく動きません。

おかしいところがあれば教えて頂きたいです。

Private Sub コマンド2_Click()

Dim f As String
Dim fileList As String
Dim TextBox1 As String
Dim strNo As String

'テキストボックスの値
strNo = TextBox1

f = Dir("D:\123\" & strNo & "*.xls")
Do While f <> ""
fileList = fileList & f & ";"
f = Dir
Loop
'フォーム上のリストボックスに表示
With Forms("form").Controls("ListBox1")
.RowSourceType = "Value List"
.RowSource = fileList
End With
End Sub

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

【10953】Re:Dir関数について
発言  超初心者  - 09/1/23(金) 16:24 -

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

Dir("D:\ABC\" & [テキストボックスの値] & "*.xls")

これで試してみて下さい。
・ツリー全体表示

【10952】Re:帳票フォームでレコード絞込み(ADO)
回答  hatena  - 09/1/23(金) 15:37 -

引用なし
パスワード
   まず、

>フォーム独自のレコードソースに設定して、DBを読取で開こうと思うと
>更新の許可等を全て「いいえ」に設定する必要があるようですが、その
>ようにすると、複数ある検索ボックスが編集不可になってしまう。

フォームでは参照だけで、更新したくないと言うことでしょうか。
ならば、レコードソースを設定して、「レコードセット」プロパティを
「スナップショット」にすれば連結コントロールは編集不可で、
非連結コントロールは編集可能になります。

あとは、よく分かりませんが、

> そのプロシージャでRSを作成して編集するため

ということと、フォームにADOのレコートセットをセットすることに
どのような関連があるのでしょうか。


------------------------------
hatena Chips
pub.ne.jp/hatena/
------------------------------
・ツリー全体表示

【10951】Re:帳票フォームでレコード絞込み(ADO)
発言  眠眠  - 09/1/23(金) 10:51 -

引用なし
パスワード
   hatenaさん、ご提案ありがとうございます。
返信が遅くなり申し訳有りません。

MDBファイルです。

>なぜ、ADOなんでしょうか。
当初、レコードソースにSQLを設定して作成してたのですが、
ダブルクリックで更新させる処理を追加したため、DBを読取で開く
必要が出来ました。

理由は、更新処理を元々別の処理で使用していたプロシージャを流用した
ため。そのプロシージャ独自でRSを作成して編集するためです。

フォーム独自のレコードソースに設定して、DBを読取で開こうと思うと
更新の許可等を全て「いいえ」に設定する必要があるようですが、その
ようにすると、複数ある検索ボックスが編集不可になってしまう。

Me.Filterで設定できると、OR結合・AND結合の制限なく絞込みの設定も
簡単にできるのですが、その方が助かるのは助かるのですが…。

流用したプロシージャを大幅に変更するのではなく、何か対策があれば
と思い、質問させていただきました。

が、もしかして、サブフォームを使用して
検索フォームと別に読取でDBを開くフォームを作成した方が宜しいでしょうか?

==================
仕様が少し追加されました。
日付で絞り込んだ結果を複数一度に更新をかけるようになりました。
こちらもダブルクリックで更新する場合と同じプロシージャを利用します。

当方の勘違いや、説明不足の部分があれば、突っ込みお願いします。
・ツリー全体表示

【10950】Dir関数について
質問  VB  - 09/1/23(金) 10:02 -

引用なし
パスワード
   VBAのDir関数について教えていただきたいのですが、
フォルダー内のファイルを検索するのに

Dir("D:\ABC\123*.xls")とすると123を含む検索結果が表示されるのですが

フォーム上のテキストボックスに「123」と入力し同じ検索結果を
得ようとする場合は、Dir("D:\ABC\???")の???の部分にテキストボックスの
値を代入すれば良いのでしょうか。

または別の方法があるのでしょうか。

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

【10949】Re:複数バージョンが共存する中で特定の...
発言  小僧  - 09/1/22(木) 21:07 -

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

複数のバージョンの Office がインストールされている場合の
Office オートメーションについて

h tp://support.microsoft.com/kb/292491/ja

この辺に問題がありそうですね。

またそのページのリンク先に


>Office OLE オブジェクトを別のプログラムに挿入する
>
> 1台のコンピュータに複数のバージョンの Office をインストールした場合、
> Office オブジェクトを別のプログラムに挿入する
> (たとえば、Excel ワークシート オブジェクトを Word 文書に挿入する) と、
> 最新のバージョンのプログラムが使用されます。

なんて記述も見られます。

あまり良いとは思いませんが、

"C:\Program Files\Microsoft Office\Office\Excel.Exe" /regserver

と Shellステートメント実行後に
OLE処理を行うとうまくいくかもしれませんね。

(Officeの混在環境がないため、当方未検証です。)
・ツリー全体表示

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