Access VBA質問箱 IV

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

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


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

【7263】データが違うとなってしまうのはなぜ?
質問  わん  - 06/2/13(月) 16:55 -

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

今回は累計計算をさせようとして
発生したことについてご質問です。

以下に例を挙げて説明します。

●テーブル1
 クラスID:オートナンバー、主キー
 クラス:テキスト

●テーブル2
 ID:オートナンバー、主キー
 年月日:日付型
 クラス:ルックアップ
 得点:数値型

※クエリ1
SQL
SELECT テーブル2.ID, テーブル2.クラス, テーブル2.得点, テーブル2.年月
FROM テーブル2 INNER JOIN テーブル1 ON テーブル2.クラス = テーブル1.クラスID;

※クエリ2
SQL
SELECT T.ID, T.得点, T.年月日, T.クラス, (select sum(S.得点) from クエリ as S where val(S.年月) <= val(T.年月日) and S.ID <= T.ID) AS 累計
FROM クエリ AS T
ORDER BY T.ID;

※クエリ3
SQL
SELECT クエリ2.年月日, クエリ2.ID, クエリ2.クラス, クエリ2.得点, クエリ2.累計, IIf(Format(クエリ2.年月日,"mmdd")="0229",Null,DateAdd("yyyy",-1,クエリ2.年月日)) AS 前年度年月日, P.得点 AS 前年得点, P.累計 AS 前年累計, P.クラス AS 前年クラス
FROM クエリ2 LEFT JOIN [SELECT IIf(Format(クエリ2.年月日,"mmdd")="0229",Null,DateAdd("yyyy",1,クエリ6新.年月日)) AS 来年年月日, クエリ2.クラス, クエリ2.得点, クエリ2.累計
FROM クエリ2]. AS P ON (クエリ2.クラス = P.クラス) AND (クエリ2.年月日 = P.来年年月)
ORDER BY クエリ2.年月日;

テーブル2をクエリ1に置き換えてからクエリ2で累計計算をして
クエリ3で前年度表示としているのですがデータ型が違うと表示されて
しまいます。
クエリ1に置き換えずにクエリ2の処理を直接テーブルから行えば
実行されるのですがクエリ1で別に計算をさせたいので必要なのです。

データが違うとなってしまうのは何故なんでしょうか?
また、これを上手く実行させるにはどうすれば良いのでしょうか?
同じ動作ができれば異なる方法でも構いません。

宜しくご教授をお願いします。
・ツリー全体表示

【7262】追加質問:テーブル・マクロの変更ができ...
質問  ガイア  - 06/2/13(月) 16:00 -

引用なし
パスワード
   こんにちは。
よろしくお願いします。

MDEに変換すれば、フォーム・レポートのデザインは出来なくなりますが
テーブルはデータの削除が出来てしまします。マクロも変更できてしまいます。
すべてデザインの変更など第3者ができない(さわれない)様にできる方法は
ありますか?
ご教授お願いします。
・ツリー全体表示

【7261】Re:アプリケーション稼動後の機能追加
回答  Gin_II  - 06/2/13(月) 8:56 -

引用なし
パスワード
   >例えばフォーム部(フロントエンド) とデータ部(バックエンド)を別に作成し、
>フロントエンド部の MDB ないし MDE を差し替えるというのはいかがでしょうか。

> テーブルやその他機能的な追加があったときは、

フロントエンド部分の修正なら、小僧さんの回答で大丈夫でしょうけど、
テーブル部分に変更があったら、自分で移行ツールを作るしかないと思います。

そんなこと(テーブルの修正)がないように、最初にしっかりと設計する必要が
ありますね ^^;
・ツリー全体表示

【7260】Re:アプリケーション稼動後の機能追加
回答  小僧  - 06/2/12(日) 9:34 -

引用なし
パスワード
   ▼M.H さん:
おはようございます。

>追加した機能だけお客様へ送り、取り込むような方法が
>Accessにはあるのでしょうか?

例えばフォーム部(フロントエンド) とデータ部(バックエンド)を別に作成し、
フロントエンド部の MDB ないし MDE を差し替えるというのはいかがでしょうか。
・ツリー全体表示

【7259】Re:Passwordの仕方
回答  小僧  - 06/2/12(日) 9:28 -

引用なし
パスワード
   ▼正伝 さん:
おはようございます。

Form2 についての説明が殆どないのですが、
「部署」というフィールドを持つ連結フォームで宜しいでしょうか?

もしそうであれば、

Private Sub コマンド1_Click()
Dim strBusyo As String
Dim strPass As String
Dim chkFLG As Boolean
  
  strBusyo = Me.テキスト1.Value
  strPass = Me.テキスト2.Value

  Select Case strBusyo
    Case "東"
      chkFLG = (strPass = "1111")
    Case "西"
      chkFLG = (strPass = "2222")
    Case "北"
      chkFLG = (strPass = "3333")
    Case "南"
      chkFLG = (strPass = "4444")
  End Select
  
  If chkFLG Then
    DoCmd.OpenForm "フォーム2", _
      WhereCondition:="部署 = '" & strBusyo & "'"
  Else
    MsgBox "部署名及びパスワードをもう一度確認"
  End If
End Sub

のようなコードになると思われます。

Form2 にはフィルタを掛けてあるだけですので、
ツールバーのフィルタボタンをもう一度押すと全データが見れてしまいます。

Form1 で指定したデータ以外を見せなくする為にはもう一工夫必要になりますね。
・ツリー全体表示

【7258】アプリケーション稼動後の機能追加
質問  M.H  - 06/2/11(土) 13:28 -

引用なし
パスワード
   いつも拝見させていただいております。

例えば、Accessにて作成したアプリケーションをお客様の
環境へ納品→稼動したとします。その後に、テーブルや
その他機能的な追加があったときは、皆様はどのように
されていますか?

追加した機能だけお客様へ送り、取り込むような方法が
Accessにはあるのでしょうか?

間違ってもMDBファイルを上書きしてもらうわけには
いきませんし・・・

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

【7257】Passwordの仕方
質問  正伝  - 06/2/10(金) 19:35 -

引用なし
パスワード
   Form2の対応したデータだけ編集できるように表示したいのです。
(ちなみにForm2の中の部署というテキストボックスの東、西、北、南という風なデータをそれぞれ下のようにした時にそのデータが出るようにしたい分けです)
Form1に非連結のテキストボックス1とテキストボックス2とコマンドボタン1があります。
テキスト1には、東、西、北、南のどれかを選んでテキストボックス2にPasswordをいれた時にその関連したForm2のデータがでるようにしたい分けです。
例えば、テキスト1に→東 と入力して
    テキスト2に→111 と入力してコマンドボタン1をクリックすると
    そのForm2に対応した部署 東が入っているデータがでる洋にしたい分けです。
   東、南、西、北にそれぞれ違うPasswordをいれたいわけです。
  東 → 1111 このの対応した東時すForm2をのデータ出す
  西 → 2222 このの対応した西時すForm2をのデータ出す
  北 → 3333 このの対応した北時すForm2をのデータ出す
  南 → 4444 このの対応した南時すForm2をのデータ出す
このような仕方で、データを出すやり方はあいますか?
色々な本をみたのですが、どうも分かりません。お願いします。
・ツリー全体表示

【7256】Re:MDE
お礼  ガイア  - 06/2/10(金) 17:20 -

引用なし
パスワード
   ▼たん さん:
>>レポート、フォームで作成したものを、デザインビューに切替えて
>>第3者に修正できないようにしたいのですが。具体的にお願いします。
>
>MDEにしたものを第3者に触らせるようにして下さい。

ありがとうございました。
今後もよろしくおねがいします。
・ツリー全体表示

【7255】Re:MDE
回答  たん  - 06/2/10(金) 17:09 -

引用なし
パスワード
   >レポート、フォームで作成したものを、デザインビューに切替えて
>第3者に修正できないようにしたいのですが。具体的にお願いします。

MDEにしたものを第3者に触らせるようにして下さい。
・ツリー全体表示

【7254】デザインビューでレポートとフォームの変...
質問  ガイア  - 06/2/10(金) 16:27 -

引用なし
パスワード
   はじめまして。
よろしくお願いします。
レポート、フォームで作成したものを、デザインビューに切替えて
第3者に修正できないようにしたいのですが。具体的にお願いします。
何方かご教授お願いします。
・ツリー全体表示

【7253】Re:インポートメニューを表示させたい
お礼  PJ  - 06/2/10(金) 13:01 -

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

>表示−ツールバー−ユーザー設定−コマンドタブ−ファイルを選んで
>インポートアイコンをドラッグしてツールバーに貼り付けます。
それが、表示メニュー自体が出ていないので・・・

でも、インポート機能が見つからなくても、大量データを追加する
方法を探り当てました。Excelデータをまず新規Accessファイルのテーブルに
インポートしてそれをコピーし、問題のインポート機能が見つからないシステムの
テーブルに、Ctrl+Vで貼り付けられました。

カスタマイズはせっかくなのでもうちょっと勉強してみます。
ありがとうございました♪
・ツリー全体表示

【7252】Re:ADOを使用したリンクテーブルの作成に...
回答  上を目指す者  - 06/2/10(金) 9:36 -

引用なし
パスワード
   YU-TANG さん、返信ありがとうございます。

>それは Access ではなく DSN の設定ではありませんか。
>たまたま Access がシームレスに DSN マネージャを呼び出して
>いるだけで、Access の機能ではないと思いますが。
はい、そのとおりです。

>手元に SQL Server が無いので確認できませんが、手動で
>「セキュリティ接続を使用する」設定の DSN を予め作成し、
>ADOX でその DSN を指定するのではダメでしょうか。
なるほど、ODBCでのDSN登録そのものの設定で
なんとかなるかもしれませんね。

DSN登録もプログラム上で行っているので、
このへんの情報を探ってみます。

また、報告させて頂きます。ありがとうございました。
・ツリー全体表示

【7251】お礼
お礼  Tochimoto  - 06/2/9(木) 23:03 -

引用なし
パスワード
   ありがとうございました。おかげで解決しました。
また何か分からない事がありましたら教えてください。
・ツリー全体表示

【7250】Re:インポートメニューを表示させたい
回答  たぬき  - 06/2/9(木) 18:56 -

引用なし
パスワード
   VBAでEXECELからインポートするのは
DoCmd.TransferSpreadsheet acImport
があります。

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
  "蔵書","C:\Lib1.xls"

の形にすれば、Lib1.xlsからAccessの[蔵書]テーブルにインポートできます。

メニューは簡単に変更できてしまうのでやっかいです。
でもカスタマイズにも挑戦してみてください。

それ以外ではインポートアイコンをツールバーに貼り付けると便利かと思い
ます。
表示−ツールバー−ユーザー設定−コマンドタブ−ファイルを選んで
インポートアイコンをドラッグしてツールバーに貼り付けます。
・ツリー全体表示

【7249】Re:ADOを使用したリンクテーブルの作成に...
回答  YU-TANG  - 06/2/9(木) 18:45 -

引用なし
パスワード
   こんばんは、YU-TANG です。

▼上を目指す者 さん:
>手動でリンクテーブルを作成していった際に、
>「セキュリティ接続を使用する」のチェックボックスがあるので、

それは Access ではなく DSN の設定ではありませんか。
たまたま Access がシームレスに DSN マネージャを呼び出して
いるだけで、Access の機能ではないと思いますが。

手元に SQL Server が無いので確認できませんが、手動で
「セキュリティ接続を使用する」設定の DSN を予め作成し、
ADOX でその DSN を指定するのではダメでしょうか。
・ツリー全体表示

【7248】インポートメニューを表示させたい
質問  PJ  - 06/2/9(木) 17:45 -

引用なし
パスワード
   こんにちは。AccessVBAはまったくの初心者です。

テーブルにExcelデータをインポートしてデータを追加したいのですが、
メニュー自体にインポートメニューが出てきません。
Ctrl+F11でメニューバーを表示させることまではできたのですが、
ファイルメニューの中にインポートがなく、またメニューバーはファイル・ウィンドウ・ヘルプの3つしかありません。
モジュールを見てみたのですが、それらしきコードがありません。

なんとかデータをインポートしたいのですが、
大量なので1件1件コピーするわけにもいかず・・・。
どこかで表示の設定がされているのでしょうか?
・ツリー全体表示

【7247】ADOを使用したリンクテーブルの作成につい...
質問  上を目指す者  - 06/2/8(水) 9:37 -

引用なし
パスワード
   ODBCドライバ“SQL Server”を使用して、
MDBファイルへSQL Server上にあるテーブルへリンクテーブルを作成したいのですが、Windows 認証でログインする場合の作成方法が分かりません。

Windows 認証を使わずに、普通にID/PASSを入れてログインする方法なら分かります。

Dim tbl As New ADOX.Table
Dim cat As New ADOX.Catalog

'Open the catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  "Data Source=" & <MDBファイル名> & ";"

'Set the name and target catalog for the table
tbl.Name = "<テーブル名>"

Set tbl.ParentCatalog = cat

'Set the properties to create the link
tbl.Properties("Jet OLEDB:Create Link") = True
tbl.Properties("Jet OLEDB:Link Provider String") = _
  "ODBC;DSN=<DSN名>;UID=<ID>;PWD=<PASS>;"
tbl.Properties("Jet OLEDB:Remote Table Name") = "<テーブル名>"

' Append the table to the collection
cat.Tables.Append tbl
cat.Tables.Refresh

上記のコーディングを使用すれば、普通のログインでのリンクテーブル作成はできます。
しかし、Windows 認証の場合、これではダメです。

手動でリンクテーブルを作成していった際に、
「セキュリティ接続を使用する」のチェックボックスがあるので、
これに相当する tbl.Properties の設定項目があると思うのですが、
見つけられませんでした。

どなたかご存知の方いらっしゃいましたら教えてください。
よろしくお願いします。
・ツリー全体表示

【7246】Re:mdbコピーしてからテストすれば
お礼  pinkred  - 06/2/7(火) 13:26 -

引用なし
パスワード
   たんさん

ご指摘のとおりだと思いました。
ありがとうございます。

▼たん さん:
>>こちらの環境はac2000を使用しています。
>>何度条件を入力しなおしても同じ現象となっていますが、
>>運用中のDBなので新規に作り直すことができない状況です。
>>最適化してみて再度チャレンジしてます。
>
>つか、コピーして、コピーした先をいじればすむ話だと思うのですがね。
>(データ部と実行部を別mdbにしてるなら、両方コピーした上で、
> リンクマネージャーでリンクだけ張り直せば済むでしょうに。)
>
>で、コピーした先のmdbファイルを元に新mdbにインポートするなり、
>加工するなり、色々やればいい話。
>
># テストとはそういう風にやるものです。
・ツリー全体表示

【7245】Re:ワイルドカードを使った抽出条件
お礼  pinkred  - 06/2/7(火) 13:25 -

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

left関数で正常に抽出できるようになりました。
アドバイスありがとうございました。


>▼pinkred さん:
>こんにちは。
>
>>「1桁目から3桁目が第3土」という条件は作成できないのでしょうか?
>
>そうですね。こちらですと等価条件ですので、うまく行くかもしれませんね。
>
>
>>>> データ例
>>>>  フィールド1 フィールド2  フィールド3
>>>>  A      東京都     第3土曜(午後)
>>>>  B       大阪府     第3日曜(夕方19時以降)
>>>>  C       東京都     第3土曜(午後14時までに)
>>>>  D       神奈川県    10日(午前中)
>>>>  E       神奈川県    第2日曜(午前中)
>>>>  F       広島県      第2土曜(18時以降)
>>>>
>
>クエリで抽出する際、適当な名前を付けてフィールドを追加します。
>
>抽出:Left([フィールド3],3)
>
>
>このフィールドの抽出条件を "第3土" として結果を確認。
>問題なく抽出できるようでしたら、非表示に。
>
>でどうでしょうか。
・ツリー全体表示

【7244】Re:リレーションにこだわる必要はない
お礼  M.H  - 06/2/6(月) 22:59 -

引用なし
パスワード
   私たち初心者は、どうもハウツー物の書籍から入りがちで、
その中の章で「リレーションシップを設定しましょう」と
書いてあるので、設定しないと動かないものかと・・・

皆様方、参考になりました。
・ツリー全体表示

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