Access VBA質問箱 IV

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

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


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

【5827】Re:テキストボックスデータをテーブルに
発言  小僧  - 05/8/11(木) 13:17 -

引用なし
パスワード
   ▼桜 さん:
マクロでは
SQLの実行
SQLステートメント:
INSERT INTO IDテーブル(ID) VALUES (Forms![フォーム名].[ID])

でいかがでしょうか。

>また、どうやってべんきょうされてるんですか?

自分がAccessを始めた頃は今の様にインターネットが発達していなかったので
Helpとの戦いでしたね。

最近は回答者として色々な事例を参考に検証をしていますので
それが勉強になっていますね。
・ツリー全体表示

【5826】Re:テキストボックスデータをテーブルに
お礼    - 05/8/11(木) 11:51 -

引用なし
パスワード
   すごいです!!有り難うございます。

余談ですが、今のやり方をマクロではできないんですか?

また、どうやってべんきょうされてるんですか?
私はかなりの初心者です・・
・ツリー全体表示

【5825】Re:テキストボックスデータをテーブルに
回答  小僧  - 05/8/11(木) 11:35 -

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

>今までのを全部なしにして聞いてください。
>実行ボタンを押すとテキストボックスIDのみがIDテーブルに表示されるように設定したいのです。

この動作だけでしたら作りやすいのですが、
IDテーブルに先ほど言っていた「SEQ」フィールドみたいなものが存在した方が
後々の事を考えると良いと思うのですが…。(管理番号みたいなものです)

まぁ、そのままですと、

Private Sub 実行_Click()
Dim SQLCode As String
  SQLCode = "INSERT INTO IDテーブル(ID) VALUES ('" & Me.ID.Value & "')"
  DoCmd.RunSQL SQLCode
End Sub

で実現できそうです。
・ツリー全体表示

【5824】Re:テキストボックスデータをテーブルに
質問    - 05/8/11(木) 10:55 -

引用なし
パスワード
   はい、では・・
分かりずらくてすいません。

今までのを全部なしにして聞いてください。
テーブル:銀行本店−フィールド:本店名
                本店ID(英数字)
     銀行支店−フィールド:支店名                                  支店ID(英数字)
     IDテーブル−フィールド:ID

フォーム:銀行 

     テキストボックス:本店名
              本店ID (本店名を入力→本店IDが出力)
              支店名
              支店ID (支店名を入力→支店IDが出力)
              ID(本店IDと支店IDを合わせたもの)

      コマンドボタン:実行

IDを作るためにIDのコントロールソースに本店ID&支店IDを設定

ここまでできました。

実行ボタンを押すとテキストボックスIDのみがIDテーブルに表示されるように設定したいのです。
マクロでもVBAを使ってでもいいのですが・・・


 
・ツリー全体表示

【5823】Re:テキストボックスデータをテーブルに
発言  小僧  - 05/8/11(木) 9:21 -

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

状況がよく解らないのですがテーブルに値を格納する際に、
識別できるような値をつけるために「オートナンバー型」を
作ってください、という事だったのですが…。

当方には 桜 さんの作られたフォームが見えるわけではありませんし、
何故オートナンバー型がだめなのかも解りません。

>アルファベットも数字もごちゃまぜのものなんです。

と言われましてもこれがどこから出てきたのかも解っていません。

当方に解っているのは

>フォームAにテキストボックス1があります。テキストボックス2は消費税をつけ>るために新しく作りました。

という事だけなのですが…。
もう一度状況を具体的に説明して頂けると助かります。
・ツリー全体表示

【5822】Re:1日を越えた時間はどうすれば良いので...
お礼  わん  - 05/8/10(水) 20:08 -

引用なし
パスワード
   小僧さん:
こんばんわ。

今回もとても丁寧で理解しやすい説明をありがとうございました。
早速、トライしてみます。

感謝の気持ちでいっぱいです。
これからも宜しくお願いします。
・ツリー全体表示

【5821】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 17:37 -

引用なし
パスワード
   ▼小僧 さん:
はい、小僧さんの言うとおりあげなおししたら参照設定はできました。


>元のフォームに「txt金額」以外に SEQ に入れるための
>テキストボックスか何かがあるのでしょうか?
>
ないと思われます・・
・ツリー全体表示

【5820】Re:テキストボックスデータをテーブルに
発言  小僧  - 05/8/10(水) 16:46 -

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

>実際はアルファベットも数字もごちゃまぜのものなんです。

了解です。テキスト型でいきましょう。
問題はこれがどこから作られるかなのですが…。

元のフォームに「txt金額」以外に SEQ に入れるための
テキストボックスか何かがあるのでしょうか?

>ツールを開いたところ参照設定がクリックできないようになっておりまして・・・

こちらは大丈夫でしたでしょうか?
・ツリー全体表示

【5819】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 16:10 -

引用なし
パスワード
   えーーっとですね〜実は数値とか言っておきながら実はあれは例として教えて頂いてたもので実際はアルファベットも数字もごちゃまぜのものなんです。だからテキストしか駄目なのかな?って。
メモでもいけそうですが、どちらが簡単ですか?
・ツリー全体表示

【5818】Re:マクロでのクエリ実行
お礼  おはな  - 05/8/10(水) 15:37 -

引用なし
パスワード
   ▼Gin_II さん:
ご返信ありがとうございます(>_<)

小僧さんの方法も考えたんですが、ドラえもんも、全部カタカナだったり
一部がカタカナ、ローマ字、ローマ字とカタカナひらがなの全て交互だったり
あと、キャラクターの数も多いので、どうにか今作ってるクエリを活用したい
と思いまして…。

Gin_II さんの方法でやってみます!
ホントに有難うございました<(_^_)>
・ツリー全体表示

【5817】Re:テキストボックスデータをテーブルに
回答  小僧  - 05/8/10(水) 15:36 -

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

>ツールを開いたところ参照設定がクリックできないようになっておりまして・・・

デバッグ中や、ステップインの状態(コード実行中)ではないでしょうか。
エディタ(コードを書く画面)を開いてすぐでも選べませんか?

>ちなみにSEQ : オートナンバー型にと小僧さんはおっしゃいましたが、
>オートナンバーでは駄目なので、テキスト型にしてあるんです。
>これは関係ありますか?
>
>またテキスト型にした場合なにかコードの中身は変わるのですか?

テキスト型だとちょっと面倒になるので、数値型でいかがでしょう。
そして、1個目の SQL がちょっと変更になります。

> SQLCode = "INSERT INTO T_履歴(金額) VALUES (" & Me.txt金額 & ")"
  SQLCode = "INSERT INTO T_履歴(SEQ, 金額) " _
      & "VALUES (" & DMax("SEQ", "T_履歴") + 1 & "," & Me.txt金額 & ")"
・ツリー全体表示

【5816】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 15:08 -

引用なし
パスワード
   ▼小僧 さん:
成る程ーーー。小僧さんすごいっす。

ツールを開いたところ参照設定がクリックできないようになっておりまして・・・

ちなみにSEQ : オートナンバー型にと小僧さんはおっしゃいましたが、オートナンバーでは駄目なので、テキスト型にしてあるんです。

これは関係ありますか?

またテキスト型にした場合なにかコードの中身は変わるのですか?
・ツリー全体表示

【5815】Re:テキストボックスデータをテーブルに
回答  小僧  - 05/8/10(水) 15:00 -

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

>ユーザ定義型は定義されていません。
>>'要参照設定 Microsoft DAO x.x Object Library

という事で…。

コードが出ている画面で、[ツール] → [参照設定] にて、

Microsoft DAO x.x Object Library を探してチェックして下さい。
x.xは数字になっていますが、恐らく 3.6 があると思います。
(できるだけ数字の大きいのを選んでください)


> XName = "C:\progra"1\micros"2office\excel.exe

XName は出力のために使うエクセル名です。

Cドライブ直下に「AAA.xls」という名前で作るのでしたら
  XName = "C:\AAA.xls"

現在のAccessが入っているフォルダと同じところでしたら、
  XName = CurrentProject.Path & "\AAA.xls"

という感じですね。
・ツリー全体表示

【5814】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 14:49 -

引用なし
パスワード
   ▼小僧 さん:
やりました!でも・・
コンパイルエラー
ユーザ定義型は定義されていません。

とエラー発生です。

>Dim QD As DAO.QueryDef

 ↑がどうやら間違っているみたいで、

  XName = "C:\Test1.xls" 'Excel のフルパスを入れる


   ↑これを元に作成したのが、

 XName = "C:\progra"1\micros"2office\excel.exe

と入力しましたが字が真っ赤です。フルパス名とは上記のように記入するのではないのですか?
・ツリー全体表示

【5813】Re:マクロでのクエリ実行
回答  Gin_II  - 05/8/10(水) 14:33 -

引用なし
パスワード
   Dim dbs As DAO.Database
Dim rst As DAO.Recordset

Dim Q_Name As String
Dim strSql As String

Q_Name="_名称変更"
strSql = "SELECT [NAME] FROM [MSysObjects] " _
    & "WHERE [NAME] Like '*" & Q_Name & "*'"

Set dbs = Currentdb
Set rst = dbs.OpenRecordset(strSql)

Do Until rst.EOF
  dbs.Execute rst("Name"), dbFailOnError
Loop

Set rst = Nothing
Set dbs = Nothing

とか。

ただ、
小僧さん - 05/8/10(水) 11:45 のレスは、テーブルのデータとして
変換データを準備しておけば?ということですね。

その場合は、名称の置換そのものが必要ないってことですよ。
・ツリー全体表示

【5812】Re:マクロでのクエリ実行
質問  おはな  - 05/8/10(水) 14:11 -

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

ありがとうございます(>_<)
やはりマクロよりはクエリ名を変更した方が後々、
クエリが増えても楽かと思いまして、そうする事にしました!

で、またまた質問なんですが…

1_名称変更1、1_名称変更2、1_名称変更3
2_名称変更1、2_名称変更2、2_名称変更3、2_名称変更4

とクエリがあって、分かりずらい文ですが作ってみました。

Q_Name="_名称変更"
Q_No1=1
Q_No2=1

Do Until Q_No1 = 3
  If Q_No1 & Q_Name & Q_No2 Then   'クエリがあったら以下の処理
    Do Until Q_No2 = ●       ’最終テーブルのNoを出したい!!
      DoCmd.OpenQuery Q_No1 & Q_Name & Q_No2, acNormal, acEdit
     Q_No2 = Q_No2 + 1
    Loop
  end If
  Q_No1 = Q_No1+1           '2_名称変更1のクエリ準備
  Q_No2 = 1
Loop

DO Until…LOOPでする時、最大値(ここでいう4)設定するには
どうしたら良いんでしょうか?
・ツリー全体表示

【5811】Re:アクセスのバックアップの取り方
回答  てっちゃん  - 05/8/10(水) 14:11 -

引用なし
パスワード
   ▼桜 さん:
>これで普通はできるんですか?
残念ながら出来ません。

>普通にエクセルなどではできました。
エクセルの場合も、エクセルファイルではなく、スクラップとして保存されて
いるかと思います。
また、データの一部(セルの一部)を選択して、コピー-->貼り付けを
しても、ブック全体が保存されるかと思います。


アクセスで、テーブルのデータを保存する場合は、前回書いたとおり、
一度、エクセルまたはメモ帳などに落として、そのファイルを保存します。
この方法であれば、テーブルの一部でも、全部でもOKです。
・ツリー全体表示

【5810】Re:テキストボックスデータをテーブルに
回答  小僧  - 05/8/10(水) 12:47 -

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

テーブル「T_金額」
SEQ : オートナンバー型
金額: 通貨型

フォーム(適当な名前で…)
テキストボックス: txt金額
コマンドボタン : 実行

を用意してください。

Private Sub 実行_Click()
'要参照設定 Microsoft DAO x.x Object Library
Dim SQLCode As String
Dim XName As String
Dim QD As DAO.QueryDef

  XName = "C:\Test1.xls" 'Excel のフルパスを入れる

  SQLCode = "INSERT INTO T_履歴(金額) VALUES (" & Me.txt金額 & ")"
  DoCmd.RunSQL SQLCode
  
  SQLCode = "SELECT T_履歴.SEQ, T_履歴.金額, " _
      & "CCur([金額]*0.05) AS 消費税 FROM T_履歴;"
  
  Set QD = CurrentDb.CreateQueryDef("Q_金額", SQLCode)
  
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Q_金額", XName

  If MsgBox("クエリを削除しますか?", vbYesNo) = vbYes Then
    DoCmd.DeleteObject acQuery, "Q_金額"
  End If
End Sub

このままのコードですと、例えば
・「txt金額」に値が入っていない
・既にクエリ「Q_金額」が存在している

等の場合エラーになりますので、
それぞれにエラーが出ない様な処理を付け加えなければいけません。
・ツリー全体表示

【5809】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 11:48 -

引用なし
パスワード
   ▼小僧 さん
こんにちは。私ではないですね。。誰でしょうか?
確かににてます・・


履歴データとしてAccess側に保持しておきたいので、

1) ボタンをクリックしたらテーブルに保存。
2) 保存したテーブルを元にクエリを作成。
3) Excel に出力。

の3ステップで行うようにしたいです。

宜しくお願いいたします_(_^_)_
・ツリー全体表示

【5808】Re:マクロでのクエリ実行
発言  小僧  - 05/8/10(水) 11:45 -

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

クエリで行うのでしたらGin_II さんの方法で…。

>ある程度のものは更新クエリを作成し
>また、もっといい方法があったら教えて下さい!!

このへんをテーブルを持たせて処理させてみるのはいかがでしょうか。

T_集計用変換テーブル
SEQ  キャラクタ名
1     ドラえもん  
1     どらえもん
1     ドラエモン
1     ドラ
2     ピカチュウ
2     ぴかちゅう
2     ピカチュー




「ドラえもん」「どらえもん」「ドラエモン」「ドラ」なら「1」というように
変換テーブルを持たせて、「1」は何人、「2」は何人と計算していけば
集計も楽にできると思うのですがいかがでしょうか。
・ツリー全体表示

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