Access VBA質問箱 IV

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

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


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

【4206】コンボボックス選択時の処理
質問  Aiz  - 05/1/19(水) 16:12 -

引用なし
パスワード
   毎度お世話になっています。
コンボボックスの値を選択すると、条件に従ったテキストボックスを非活性にするという処理をやることになりまして、コンボボックスの値を選択するところの処理がわかりません。
コンボボックスにはAというテーブルの、Bというフィールドから値を持ってきています。
画面からコンボボックスを選択する処理(途中までしか作れてません)が以下です。

Private Sub CMB_TEST1_click()

’変数の宣言など行う


’選択したコンボボックスの値ごとに処理を行う。
Select Case Mid

Case "あああ"
    ’ここでテキストボックスを非活性にする処理を行う。
Case "いいい"
    ’ここでテキストボックスを非活性にする処理を行う。
Case "ううう"
    ’ここでテキストボックスを非活性にする処理を行う。

End Select

End Sub

という感じです。
初歩的な質問ですいませんが、よろしくお願いします。
・ツリー全体表示

【4205】Re:リンクのループ?
回答  MJM  - 05/1/19(水) 15:29 -

引用なし
パスワード
   マクロですか?

マクロとなると、
TransferDatabase/データベース変換 アクションのTransfer TypeがLink
DeleteObject/オブジェクトの削除 アクション
または、
RunCommand/コマンドの実行 アクションの
acCmdLinkTables
acCmdRemoveTable
あたりを用いることになるのでしょうか。
マクロはほとんど使用しませんので不明です。

VBAなら、

Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim TD As DAO.TableDef

Set DB = CurrentDb
Set RS = DB.OpenRecordset("日付テーブル")

Do While Not RS.EOF

  'ローカルでのテーブル名でオブジェクトを作成
  Set TD = DB.CreateTableDef(RS![テーブル名])

  'ローカルテーブルが残ってた場合を考慮して、念のため一旦削除
  On Error Resume Next
  DB.TableDefs.Delete RS![テーブル名]
  On Error GoTo 0

  'リンク先データベースの接続情報を設定
  TD.Connect = ";DATABASE=C:\Temp\db1.mdb"

  'リンク先データベースのテーブル名を設定
  TD.SourceTableName = RS![テーブル名]

  '作成したオブジェクトをコレクションに追加
  DB.TableDefs.Append TD

  'クエリ実行

  'コレクションからオブジェクトを削除
  DB.TableDefs.Delete RS![テーブル名]

  RS.MoveNext

Loop

RS.Close
DB.Close
Set TD = Nothing
Set RS = Nothing
Set DB = Nothing

という感じでは如何でしょうか。
・ツリー全体表示

【4204】Re:リンクのループ?
質問  nemotake  - 05/1/19(水) 14:27 -

引用なし
パスワード
   ▼MJM さん:
マクロでテーブルのリンクまたは解除はどうすればいいですか?
ヘルプを見ましたがよくわかりませんでした。すみません。
宜しくお願いします。
・ツリー全体表示

【4203】Re:リンクのループ?
お礼  nemotake  - 05/1/19(水) 13:51 -

引用なし
パスワード
   MJM さん、ありがとうございます。
ヘルプを見てがんばってみます。
・ツリー全体表示

【4202】Re:リンクのループ?
回答  MJM  - 05/1/19(水) 13:39 -

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

DAOなら、TableDef オブジェクトで、
CreateTableDef メソッド
Connect プロパティ
SourceTableName プロパティ
Append メソッド
Delete メソッド
などを用いては如何でしょうか。
・ツリー全体表示

【4201】リンクのループ?
質問  nemotake  - 05/1/19(水) 12:30 -

引用なし
パスワード
   顧客情報.mdbに199002、199003、199004、199005・・・という名前のテーブルがあります。もうひとつ日付テーブルに199002と199004と入力した場合、顧客情報.mdbの199002にリンクし、クエリー実行したあとにリンクを解除し、顧客情報.mdbの199003にリンクし、クエリー実行したあとにリンクを解除し、顧客情報.mdbの199004にリンクし、クエリー実行したあとにリンクを解除して終了したいですが、全然わかりません。今は全部をリンクしてマクロで判断して実行しています。この場合ですと、顧客情報.mdbにデータを追加するとマクロも修正したければなりません。自分のレベルはとても低いので、教えてください。
宜しくお願いします。
・ツリー全体表示

【4200】Re:GetOpenFilenameのChDir
回答  Gin_II  - 05/1/19(水) 1:59 -

引用なし
パスワード
   >Access2000にてExcelVBAでの「GetOpenFilename」と同様の効果のメソッドを調べたのですが、
>見つからなかったので下記の方法をとりました。

ファイル参照ダイアログを、初期フォルダを設定して使えればいいってことですよね?

でしたら、
[ファイルを開く] ダイアログを表示する方法
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGetFileName.html

こちらを使っては?
・ツリー全体表示

【4199】GetOpenFilenameのChDir
質問  なっちん  - 05/1/19(水) 0:58 -

引用なし
パスワード
   いつも御世話になっております。
一点疑問に思っている部分があります。
ご存知の方はご教授願います。

Access2000にてExcelVBAでの「GetOpenFilename」と同様の効果のメソッドを調べたのですが、見つからなかったので下記の方法をとりました。
しかし、「ChDrive」と「ChDir」が効果を発揮しません。
使い方か間違えているのでしょうか?
それともAccessでは効果はないのでしょうか?

Private Sub GetOpen()

  Dim AP As Object
  Dim Path As Variant

  Set AP = CreateObject("Excel.Application")
  AP.Visible = True
  AP.UserControl = True
  ChDrive "C"             'この部分の効果が発揮されない
  ChDir "C:\Access\data"     '同上
  Path = AP.Application.GetOpenFilename("テキストファイル(*.txt),*.txt", 1)
  AP.Application.Quit
  Set AP = Nothing

End Sub
・ツリー全体表示

【4198】サブフォームについて
質問  えび  - 05/1/18(火) 15:11 -

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

サブフォームについて2点教えてください。

1.サブフォームにおいて主フォームのキーを入力しないように
  するには。

  例えば

  受付番号 999999 ←主フォームの主キー

  〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
  
  [受付番号] [商品] [数量] [金額]  サブフォーム
   999999   A   10   2,500
   999999   B   20   2,500
   999999   C   15   2,500
   999999   D    5   2,500
   999999   E   100   2,500

  
  上記のサブフォーム[受付番号]を表示しないように
  することは可能でしょうか。


2.サブフォームの行数を規制したい

  サブフォームを1〜n(入力できる行数)に
  するにはどのようにすればよいでしょうか。


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

【4197】Re:インポートでなく、追加貼り付け
回答  クロ  - 05/1/18(火) 9:46 -

引用なし
パスワード
   それほど詳しくないので…。
参考までに
ヘルプで「Microsoft Jet SQL のリファレンス」を
ご覧になってはどうでしょうか?

Ac2002の場合
利用できるSQLはJetSQL(Ver4)で(ANSI SQL-89準拠)のようです。
ツール>オプションで「ANSI SQL-92」使用に変更できるようです。
・ツリー全体表示

【4196】Re:インポートでなく、追加貼り付け
お礼  ひろのしま  - 05/1/18(火) 9:29 -

引用なし
パスワード
   ▼クロ さん:
>>Accessでテーブルの列名を変えることの出来る,Oracleで使用するコマンド
>>はありませんでしょうか。
>
>Oracleのことはそちらの掲示板などで聞かれた方がよいかと...
>
>>Docmd.RunSQL"Alter table テーブル名 change column 旧列名 新列名;"
>>Docmd.RunSQL"Alter table テーブル名 modify column 旧列名 新列名;"
>
>AccessのSQLではフィールド名を変更することはできなかったと思います。

すみません。下記のコマンドで解決できました。
'テーブル名を変更するコマンド(不要)------------------
Dim Tdf As TableDef
Dim Fld As Field
Set Tdf = CurrentDb.TableDefs("該当テーブル名")
For Each Fld In Tdf.Fields
   If fld.name="該当フィールド名" Then
     fld.Name="変更後フィールド名"
   End if
Next

クロさん、ご回答ありがとうございます。それと、もう一つ質問なのですが、
Accessにおいて使えるOracleやMySQLのコマンドの範囲がいまいち把握できません。
Docmd.RUNSQL "Alter table 該当テーブル名 add column 追加列名 text;"
の、列を追加するコマンドが使用できたので上記のコマンドを使用してしまいました。
ですので、もし、レジストリーやAccessの参照設定などで変更できる、あるいは絶対に出来ない等の理由があれば教えてください。
・ツリー全体表示

【4195】Re:インポートでなく、追加貼り付け
回答  クロ  - 05/1/18(火) 8:20 -

引用なし
パスワード
   >Accessでテーブルの列名を変えることの出来る,Oracleで使用するコマンド
>はありませんでしょうか。

Oracleのことはそちらの掲示板などで聞かれた方がよいかと...

>Docmd.RunSQL"Alter table テーブル名 change column 旧列名 新列名;"
>Docmd.RunSQL"Alter table テーブル名 modify column 旧列名 新列名;"

AccessのSQLではフィールド名を変更することはできなかったと思います。
・ツリー全体表示

【4194】Re:2つの時間の間隔を求める
回答  Gin_II  - 05/1/17(月) 18:59 -

引用なし
パスワード
   >と入力すると、「Jikan」に時間だけが計算されて、「7」という答えが帰ってきてしまいます。
>これをきちんと、時、分まで答えが返ってくるようにするには、どうすればよいでしょうか?

分間(秒間?)を求めて、それから計算すればいいかと。

Mod 演算子
\ 演算子
をヘルプで確認してください。
・ツリー全体表示

【4193】2つの時間の間隔を求める
質問  ROMI  - 05/1/17(月) 18:21 -

引用なし
パスワード
   2つの時間の間隔を求めるにはどうしたらよいでしょうか?

「KT」には、「10:20:15」
        (時) (分) (秒)
「ST」には、「17:30:30」
が入っていて、

Jikan=DateDiff("h", KT, ST)

と入力すると、「Jikan」に時間だけが計算されて、「7」という答えが帰ってきてしまいます。
これをきちんと、時、分まで答えが返ってくるようにするには、どうすればよいでしょうか?

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

【4192】Re:インポートでなく、追加貼り付け
質問  ひろのしま  - 05/1/17(月) 18:16 -

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

ありがとうございます。無事インポートできました。で、追加の質問なのですが、
Accessでテーブルの列名を変えることの出来る,Oracleで使用するコマンド
はありませんでしょうか。
Docmd.RunSQL"Alter table テーブル名 change column 旧列名 新列名;"
Docmd.RunSQL"Alter table テーブル名 modify column 旧列名 新列名;"
だと、エラー表示になってしまいます。
贅沢な質問ですが、よろしくお願いします。
・ツリー全体表示

【4191】Re:クエリの読み込みについて
お礼  ROMI  - 05/1/17(月) 18:05 -

引用なし
パスワード
   ありがとうございます。何とかエラーは出ないようになりました。
・ツリー全体表示

【4190】Re:クエリの読み込みについて
回答  MJM  - 05/1/17(月) 14:45 -

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

>Do Until rs!SyainNo = TXT_Sno And Year(rs!Date) = TXT_Nen And Month(rs!Date) = TXT_Tuki
>  rs.MoveNext
>Loop
>「rs!SyainNo のカレントレコードがありません」となってしまいます。

もしかして、最終レコードまで移動した(EOF=TRUE)際の、
Do〜Loopを抜け出る記述がないから?
だとしたら、

Do Until rs.EOF
  If rs!SyainNo = TXT_Sno And _
    Year(rs!Date) = TXT_Nen And _
    Month(rs!Date) = TXT_Tuki Then
    …
  End If
  rs.MoveNext
Loop

では、如何でしょうか。

>クエリの中に勤怠管理1というものがあり、そこからフィールド名「社員番号」、フィールド名「日付」の年、月が一致するレコードまで移動したいのですが、

単に一致するレコードだけを取得したいなら、全件読み込むまでも無く、
レコードセットを開く際に、抽出条件が指定されているクエリやSQL文を
指定されてもいいですし、
DAO、ADOのいずれを用いているのか存じませんが、
FindFirstメソッド(DAO)
Findメソッド(ADO)
などを用いた方が効率がよろしいかと。
・ツリー全体表示

【4189】クエリの読み込みについて
質問  ROMI  - 05/1/16(日) 23:09 -

引用なし
パスワード
   クエリの中に勤怠管理1というものがあり、そこからフィールド名「社員番号」、フィールド名「日付」の年、月が一致するレコードまで移動したいのですが、この書き方でよろしいでしょうか?

Do Until rs!SyainNo = TXT_Sno And Year(rs!Date) = TXT_Nen And Month(rs!Date) = TXT_Tuki
  rs.MoveNext
Loop

もし良かったのであれば、「rs!SyainNo のカレントレコードがありません」となってしまいます。このエラーを出させないためにはどうすればよいでしょうか?
教えてください。よろしくお願いします。
・ツリー全体表示

【4188】Re:2つのテーブルを1つのtxtにエクス...
お礼  なっちん  - 05/1/16(日) 22:33 -

引用なし
パスワード
   >Gin_IIさん
理想通りの出力に成功しました。
何度もご回答くださりありがとうございました。
UNIONクエリやSQLについて、これから更に勉強を進めていきます。
・ツリー全体表示

【4187】Re:テーブル作成クエリで作った新しい列に...
お礼  にしもり  - 05/1/16(日) 17:51 -

引用なし
パスワード
   ▼かろちん さん:
>今後同じような内容の処理があった場合でもお一人で対処できる
>ところまで、文献やHELP等で理解してください。
お教えいただいたところまでは理解しております。
印刷してノートに切り貼りするなどして備忘にしております。
私のようにSQL等に縁がなかった者が仕事に使えるまでになったのは、かろちんさまはじめこのサイトをサポートしているかたがたのお陰といつも感謝しております。

>SQLの構文について勉強をしていただければ私が回答せずとも
>解決できると思います。
了解いたしました。自分の力で一層の勉強をしたいと思います。
どうもありがとうございました。
・ツリー全体表示

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