Access VBA質問箱 IV

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

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


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

【8083】Re:EOFの入れ子について
お礼  Satsuki  - 06/6/29(木) 9:39 -

引用なし
パスワード
   Gin_II さん、ありがとうございました。

rs2.MoveFirstを書き忘れており、付け足したらできました。
お手数かけました。
また、新たな問題が出てきたら、どうぞよろしくお願いいたします。

>レコード番号だけ書くと、
>【変更前】
>rs1    rs2
>1    1
>2    2
>3    3
>4    4
>5    5
>
>【変更後】
>rs1    rs2    
>1    1
>1    2
>1    3
>1    4
>1    5
>2    1
>2    2
>2    3
>2    4
>2    5
>3    1
>  :
>
>のようになりませんか?
・ツリー全体表示

【8082】Re:オーバーフロー
回答  たん  - 06/6/29(木) 8:26 -

引用なし
パスワード
   手元に資料が無いのでうる覚えな部分もありますが、

Accessで使っている型と、MSDE(Sql-server)の型については、
一部、使用可能範囲が違うので、移行時の型変換時に
型の不整合等が生じている可能性はありませんか?

(プログラム中での変数使用等も含む。)

ちなみに、SQL-Serverの型の話。
http://homepage2.nifty.com/inform/vbdb/data_sqlserver.htm

各テーブル及びプログラムを個々に確認するしかないでしょう。
・ツリー全体表示

【8081】Re:MSDE2000
お礼  hiro  - 06/6/28(水) 19:17 -

引用なし
パスワード
   飛ばない豚さま

返信ありがとうございます。
確かにおっしゃる通り、パスワードが"sa"になってるのでは
と思って試してみたのですが、

「オーバーフローしました」

とのメッセージが表示されました。

インストール時も

SAPWD="" 空白に設定

でも、イントール途中にエラーメッセージが表示されてインス
トール出来ませんでした。
(エラーメッセージは忘れました。インスタンスがどうのこうの…)

教えていただいたHP参考にいたします。
助けていただき、ありがとうございました。
・ツリー全体表示

【8080】Re:MSDE2000
発言  飛ばない豚  - 06/6/28(水) 18:59 -

引用なし
パスワード
   ▼hiro さん:
すみません、私もよく分からないのですが、
(だったら回答するなって!?)

> インストール時に
> C:\MSDERelA\setup.exe SECURITYMODE=SQL SAPWD="sa"
なんとなく、パスワードが"sa"に設定されているような気がします。。。。
参照先のサイトにも
>> 〜SAPWD="saログインに付けるパスワード文字列"〜
と書かれているようです。


一応、こんな所を見つけました。
http://www.sqlpassj.org/bunkakai/begin/series/
120日間限定のGUIを使っているようなので、あまり参考にならないかもしれませんが。
・ツリー全体表示

【8079】Re:MSDE2000
お礼  hiro  - 06/6/28(水) 17:51 -

引用なし
パスワード
   小僧さま

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

サーバー名でも試したみたのですが、ダメでした。

現在はWin98SE + MSDE + Access2000 で運用しているのですが、
Win98はサポート外になると噂で聞いたので、環境を移行させた
方がよいと思いまして…。

SQLServer2005ですか…。
これも同じようにAccessでテーブル、ストアドプロシジャ、VBAな
どを作成していくのですね?
MSDE+Access2000で作成したadpファイルそのまま運用出来たら
(そんなに甘くはないのでしょうけど)なんでもOKなんですけどね。

もしよろしければ参考にされているサイトや書籍を教えていただけ
れば助かります。
よろしくお願いします。
・ツリー全体表示

【8078】Re:EOFの入れ子について
回答  Gin_II  - 06/6/28(水) 12:49 -

引用なし
パスワード
   > 作業としては、「データ」テーブル1572件×「位置」テーブル4512件で
> 7092864件分のデータが必要なのですが、このコードではできないのでしょうか?

レコード番号だけ書くと、
【変更前】
rs1    rs2
1    1
2    2
3    3
4    4
5    5

【変更後】
rs1    rs2    
1    1
1    2
1    3
1    4
1    5
2    1
2    2
2    3
2    4
2    5
3    1
  :

のようになりませんか?
・ツリー全体表示

【8077】Re:アクセスのページ設定について
回答  Gin_II  - 06/6/28(水) 12:43 -

引用なし
パスワード
   > アクセス2000でレポートを作成し、ページ設定をA3で設定しました。
>レポートを作成したPCではプレビューではA3で問題なく表示されます。
>そのアクセスを他のPCに持っていって起動しポートを表示させるとA4で表示されて
>しまします。再度ページ設定をしないといけなくなります。

プリンタ(正確にはプリンタドライバかな?)が変わると、初期設定に戻ります。


>又、プログラムで記述できますか。

できはしますが、Access2000ではやっかいですよ。

【2143】AccessVBAでプリンタの用紙サイズ制御
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=2143;id=access
・ツリー全体表示

【8076】アクセスのページ設定について
お礼  2HD  - 06/6/28(水) 10:50 -

引用なし
パスワード
   はじめまして。
アクセスで質問があります。よろしくお願いします。

 アクセス2000でレポートを作成し、ページ設定をA3で設定しました。
レポートを作成したPCではプレビューではA3で問題なく表示されます。
そのアクセスを他のPCに持っていって起動しポートを表示させるとA4で表示されて
しまします。再度ページ設定をしないといけなくなります。
他のPCで起動するときにページ設定情報を引き継ぐ方法はありますか。
又、プログラムで記述できますか。
何方か御教授お願いします。
・ツリー全体表示

【8075】Re:MSDE2000
発言  小僧  - 06/6/28(水) 10:33 -

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

MSDE2000には詳しくないので
参考程度に聞き流して下さい。

当方 WinXP Pro、Access2003、SQLServer2005Express

の環境ですが、

>SQL Servreを設定-->(local) インスートルマシンなので。

ローカルの環境にSQLServerを立てていますが、

<PC名>\SQLEXPRESS
    ^^^^^^^^^^
    サーバー名

のように指定して接続できました。


>無料のMSDE2000を使用したくて

MSDE2000を使われるのに特に理由がないのでしたら
SQLServer2005も無料で配布されていますよ。(Express Edision)
当方、勉強の真っ最中です(笑)
・ツリー全体表示

【8074】Re:クエリの式
発言  小僧  - 06/6/28(水) 10:04 -

引用なし
パスワード
   ▼あおぎんさん、クロ さん:
おはようございます。

> 給付内容Tに[1学期分A額]、[1学期分B額]、[2学期分額]、[3学期分額]、
> [1学期分A支給日]、[1学期分B支給日]、[2学期分支給日]、[3学期分支給日]・・
> というフィールドを作成し

この辺に今回の様な問題が発生する原因があるのかもしれませんね。

あおぎんさんがお作りになっているテーブル構成ですと
どうしてもクエリを使う際に制約ができてしまいます。

今回の場合は項目が増えていく訳ではない
( 4学期、5学期と追加されて行くわけではない)ため
テーブル構成そのものを否定するわけではないのですが、
ご提示の様に「支給日」でデータを抜き出したい場合などは不便ですよね。

以下一案です。

T_給付内容
SEQ    名前    項目    金額      日付
1    Aさん    学期1_A   \10,000    2006/04/01
2    Bさん    学期1_A   \8,000     2006/04/02
3    Cさん    学期1_A   \12,000    2006/04/01
4    Aさん    学期1_B   \10,000    2006/06/01
5    Bさん    学期1_B   \8,000     2006/06/01
6    Cさん    学期1_B   \12,000    2006/06/01
7    Aさん    学期2    \20,000    2006/09/01
8    Bさん    学期2    \16,000    2006/09/01
9    Cさん    学期2    \24,000    2006/09/04


以下をクエリのSQLビューに貼り付けて実行されてみて下さい。

TRANSFORM Max(P.金額) AS 金額の最大
SELECT P.名前
FROM [
SELECT T_給付内容.名前, T_給付内容.項目 & "_金額" AS 集計, T_給付内容.金額
FROM T_給付内容
UNION ALL
SELECT T_給付内容.名前,T_給付内容.項目 & "_日付" AS 集計, T_給付内容.日付
FROM T_給付内容
]. AS P
GROUP BY P.名前
PIVOT P.集計
IN ("学期1_A_金額","学期1_A_日付",
  "学期1_B_金額","学期1_B_日付",
  "学期2_金額","学期2_日付",
  "学期3_金額","学期3_日付");


上記の様なテーブル構成ですクエリでの抽出を行い易くなるのですが、
一覧表などを出す際にはいちいちクロス集計クエリにしなければなりませんので
一長一短だと思います。

クエリで色々とデータを抽出したいのでしたら
こういったテーブル構成を考えてみるのも手かもしれませんね。

※ フィールド名の先頭に半角数字があると、たまに誤作動の元になります。
 (不自然な 学期_1 という名前はそのためです。)

 ミオナさんという方のサイトが解り易くまとまっていますので
 ご参考にされてみてください。

 Miona's Square
 フィールド、コントロール、オブジェクトや変数などに付ける「名前」について
 http://ww3.tiki.ne.jp/~kaya/Ac_tips.html#Tips0_001
・ツリー全体表示

【8073】Re:クエリの式
回答  クロ  - 06/6/28(水) 9:11 -

引用なし
パスワード
   おはようございます。

支出額の算出の仕方が
[振込1A額]+[振込1B額]+[振込2額]+[振込3額]
のようになってませんか?
これはクエリ内で仮想的に出来ているフィールド名なので
パラメータを聞いてくるのではないかと思います。

支出額の「:」後を
IIf([1学期分A支給日]=[Forms]![F_振込データ作成]![振込年月日],[1学期分A額],0)+IIf([1学期分B支給日]=[Forms]![F_振込データ作成]![振込年月日],[1学期分B額],0)+IIf([2学期分支給日]=[Forms]![F_振込データ作成]![振込年月日],[2学期分額],0)+IIf([3学期分支給日]=[Forms]![F_振込データ作成]![振込年月日],[3学期分額],0)
のように書き換えてみてはどうでしょうか?
・ツリー全体表示

【8072】Re:エクスポート処理時の条件範囲
お礼  あくせーす  - 06/6/27(火) 23:35 -

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

こんばんわ。
ありがとうございます。
下記でも可能ですが、テーブルやクエリを作成した側は連休番号は
何番を入れたら良いか分かると思いますが、一般ユーザは分からないので、
連休番号が一番大きい数字を指定する方法でやりました。

RN = DMAX("連休番号","Q_Name") に変更させて頂きました。
これですと、連休番号50を追加した場合も、50のレコードを抽出できるので
良いか、と思います。

>Dim RN As Integerをしてから
>
>strSQL2のところを
>
>RN = InputBox("連休番号を指定してください")
>strSQL2 = "SELECT 連休番号, 連休, User FROM Q_Name WHERE 連休番号=" & RN & ";"
>
>でどうですか?
・ツリー全体表示

【8071】クエリの式
質問  あおぎん  - 06/6/27(火) 19:17 -

引用なし
パスワード
   いつもお世話になっています。

学期ごとに給付する費用の振込用にデータベースを作っていますが、行き詰まってしまいました。

給付内容Tに[1学期分A額]、[1学期分B額]、[2学期分額]、[3学期分額]、[1学期分A支給日]、[1学期分B支給日]、[2学期分支給日]、[3学期分支給日]・・というフィールドを作成し、支給日で抽出して振込データを作成し、振込依頼書を作ろうとしています。

学期ごとのデータを抽出して作れれば簡単なのですが、同じ学期分でも支給が別の日になる対象者もいるので、支給日によってデータを抽出したいのです。

今のところ、クエリで、

[1学期分A支給日]が振込データ作成フォームで指定したものと一致すれば、[1学期分A額]をそうでなければ0を出力するという式
『IIf([1学期分A支給日]=[Forms]![F_振込データ作成]![振込年月日],[1学期分A額],0)

を作成し、それを[振込1A額]として(以下各学期分同様に算出)、算出したそれぞれの額の合計額を[支出額]として出力しています。


このデータをもとにR振込依頼書やR振込通知書を作ろうとしたとき、[支出額]が0のデータは要らないので、[支出額]の条件を>0としたところ、『パラメータの入力[振込1A額]』との表示が出てうまく抽出できません。

通常ならクエリの式で作成したデータでも条件式で抽出できるので、式に問題があるとは思うのですが、どう修正したらよいのか・・。
ご教示をお願いします。

また、振込日によるデータの抽出でほかによい方法がありましたら、教えていただけるとたいへんありがたいです。

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

【8070】MSDE2000
質問  hiro  - 06/6/27(火) 19:11 -

引用なし
パスワード
   hiroといいます。
MSDE2000なのですが、質問させていただきました。
環境は WinXP Por,Access2000です。

WinXP PorにはIISなどの設定はしていません。

無料のMSDE2000を使用したくてインストールの方法を
探していたら下記のHPを見つけたので参考にさせてい
ただきました。
参考にさせていただいたHP
http://www.horikawa.ne.jp/msde/msde2000rela-inst/index.html

インストール時に
C:\MSDERelA\setup.exe SECURITYMODE=SQL SAPWD="sa" DISABLENETWORKPROTOCOLS=0 /L*v C:\MSDERelA\MSDELog.log
にてインストール実行。

無事に終了し、マシン再起動後、MSDE2000も起動してくれました。

Access2000にて新規プロジェクトを作成し、
データベースウィザードで下記の設定を行いました。

SQL Servreを設定-->(local) インスートルマシンなので。
ログインID-------->sa
パスワード-------->空白  なにも入力していません。
新しいSQL Serverデータベース名 adpSQL

上記を設定し、「次へ」ボタンを押すと

接続できません。
SQLState:'28000'
SQL Serverエラー:18456
[Microsoft][ODBC Server Driver][SQL Server]
ユーザー'sa'はログインできませんでした。

とエラーメッセージが表示されました。

違う方法も試そうと思い、既存のmdbファイルを
アップサイジングウィザードを使用して作成し、
設定は上記の設定で行うと、同じエラーメッセージ
が表示されました。

ユーザーIDを空白にしてみたり、パスワードをsaに
したりすると、

オーバーフローしました。

とエラーメッセージが表示されました。

このエラーを回避して作成するにはどのようにすれば
よいのでしょうか?もし、詳細ご存知の方おられまし
たら助言いただけたらと思います。

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

【8069】Re:ディレクトリのチェック
お礼  あ〜くせす  - 06/6/27(火) 15:31 -

引用なし
パスワード
   ありがとうございます。FileSystemObjejctを使うことで、理想の結果を得ることができました。アクセスはvbScriptを使うことができたんですね、知りませんでした。ほんとうにありがとうございました。また機会があれば、よろしくおねがいします。
・ツリー全体表示

【8068】Re:EOFの入れ子について
質問  Satsuki  - 06/6/27(火) 13:27 -

引用なし
パスワード
   >Do Until rs1.EOF
>  rs2.MoveFirst
>  Do Until rs2.EOF
>    rs3.AddNew
>      rs3![kyotenmei] = rs2![拠点名]
>      rs3![kyoriX] = rs2![X1] - rs1![X]
>      rs3![kyoriY] = rs2![Y1] - rs1![Y]
>    rs3.Update
>  rs2.MoveNext
>  Loop
>  rs1.MoveNext
>Loop
>
>では?


Gin_II さん、早速のお答えありがとうございました。
無事動いたのですが、今度は、「位置」テーブルの件数分だけ計算して終わってしまいました。
作業としては、「データ」テーブル1572件×「位置」テーブル4512件で7092864件分のデータが必要なのですが、このコードではできないのでしょうか?
・ツリー全体表示

【8067】Re:関数の作り方を教えてください。
発言  Gin_II  - 06/6/27(火) 12:45 -

引用なし
パスワード
   >項目の名前が多すぎるので、

なんとなく。

Access 2000 でのデータベースの正規化の基礎
http://support.microsoft.com/kb/209534/ja

こちらを確認してください。
正規化を意識したテーブル構成にしないと、これからずっと苦労します。
・ツリー全体表示

【8066】Re:関数の作り方を教えてください。
お礼  たけし  - 06/6/27(火) 12:34 -

引用なし
パスワード
   ▼クロ さん:
こんにちは
今回はGin_II さんの関数でうまくいきました。
クロさんの教えていただきとても感謝しています。
また何かありましたら教えていただけると嬉しいです。
本当にありがとうございました。
・ツリー全体表示

【8065】Re:関数の作り方を教えてください。
お礼  たけし  - 06/6/27(火) 12:31 -

引用なし
パスワード
   ▼Gin_II さん
ありがとうございました
できました。

IFF文は簡単なのですが、項目の名前が多すぎるので、関数でできればなとおもい質問しました。

本当にありがとうございました。
・ツリー全体表示

【8064】Re:EOFの入れ子について
回答  Gin_II  - 06/6/27(火) 11:56 -

引用なし
パスワード
   > 「データ」テーブルと「位置」テーブルのすべてのデータについて計算しようと
> 思いました。

Do Until rs1.EOF
  rs2.MoveFirst
  Do Until rs2.EOF
    rs3.AddNew
      rs3![kyotenmei] = rs2![拠点名]
      rs3![kyoriX] = rs2![X1] - rs1![X]
      rs3![kyoriY] = rs2![Y1] - rs1![Y]
    rs3.Update
  rs2.MoveNext
  Loop
  rs1.MoveNext
Loop

では?
・ツリー全体表示

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