Access VBA質問箱 IV

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

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


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

【8288】Re:テーブルの最下端にレコードを追加する...
回答  飛ばない豚  - 06/7/18(火) 19:03 -

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

>INSERT INTO tbl_UNIT ( Unit_Name )
>SELECT [Forms]![F_NewUnit]![テキスト0] AS 式1;

INSERT INTO tbl_UNIT ( Unit_ID, Unit_Name )
SELECT 3 AS 式2, [Forms]![F_NewUnit]![テキスト0] AS 式1;

で、どうでしょう。
・ツリー全体表示

【8287】テーブルの最下端にレコードを追加するには
質問  にしもり  - 06/7/18(火) 17:40 -

引用なし
パスワード
   こんにちは。
tbl_UNITといテーブルがあります。フィールドはUnit_ID (数値型)、 Unit_Name(テキスト)、 Unit_Status(テキスト)です。既存のデータとして 1 Professional valid, 2 Temporary validの2レコードが入っているとします。
いま、ここに追加クエリで新たなUnit(3 Parmanent valid)を加えたいので、下記の追加クエリをかきました。(最終的にはフォームから入力する予定。)

INSERT INTO tbl_UNIT ( Unit_Name )
SELECT [Forms]![F_NewUnit]![テキスト0] AS 式1;

実行したのですが、tbl_UNITには(0 Parmanent valid)が入ってしまいます。
どうすればテーブルの最下端に(3 Parmanent valid)として追加されるでしょうか?
・ツリー全体表示

【8286】Re:クエリのデータ参照
回答  小僧  - 06/7/18(火) 14:30 -

引用なし
パスワード
   ▼ハジメさん、レモン さん:
こんにちは。

ツリーの一番下にレスしますね。

> dim Sql as string
> dim DB as database
> dim RS as recordset
>
> set DB = curentDb
>
> Sql = "select * from T_TOKMAS where TOKCD = " & me!TOKCD
>
> set RS = DB.OpenRecordset(Sql)
> if RS.Recordcount=0 then
>   ・・・・
> else
>  ・・・
> end if

どこでどの様なエラーが出ているのかが明記されておりませんので
まずはエラー内容やエラー箇所を提示してみて下さい。

ご提示されたコードだけですと
基本的にはテーブルでもクエリでも変わりなく実行できる模様ですが、
以下いくつか気づいた点を…。


> dim Sql as string

MSの技術情報よりです
Access 2002 と Access 2003 の予約語の一覧

http://support.microsoft.com/default.aspx?scid=kb;ja;286335

SQLという変数は予約語の為、早い段階での変更をお勧めします。


> if RS.Recordcount=0 then

ヘルプの Recordcountプロパティに詳細な解説がありますが、
この記述ですと正しいレコード数を返さない場合がありますよ。


> ・・・・

この部分で行っている処理によっては、
テーブルなら許可される事がクエリだと問題になる事もあります。
・ツリー全体表示

【8285】Re:クエリのデータ参照
質問  ハジメ  - 06/7/18(火) 13:48 -

引用なし
パスワード
   小僧さん レモンさん
早速のお返事ありがとうございます。

テーブルの参照のコードは以下のようにしています(この方法だけ知っています)

 dim Sql as string
 dim DB as database
 dim RS as recordset

 set DB = curentDb

 Sql = "select * from T_TOKMAS where TOKCD = " & me!TOKCD

 set RS = DB.OpenRecordset(Sql)
 if RS.Recordcount=0 then
   ・・・・
 else
  ・・・
 end if
 
 上のコードでT_TOKMASのところをクエリに変更して実行しましたが
上手くできませんした。
 よろしくお願いします。

 
・ツリー全体表示

【8284】Re:クエリのデータ参照
回答  レモン  - 06/7/18(火) 11:32 -

引用なし
パスワード
   VBAから参照して使用するということでしょうか?

Dim db As Database
Dim rs1 As Recordset

Set db = CurrentDb()

Set rs1 = db.OpenRecordset("que01", dbOpenDynaset)

if rs1!項目1=0 then
・・・・
end if


それともクエリを参照するクエリを作成・・?
もう少し具体的な情報を・・・
・ツリー全体表示

【8283】Re:クエリのデータ参照
発言  小僧  - 06/7/18(火) 11:22 -

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

> テーブルを参照するSQLでは上手くできるのですが
> クエリを参照するコードの書き方が分かりません。

テーブルを参照するコードもクエリを参照するコードも
基本的な所では変わりはありません。

現在どのようなコードを書いていて、
どこで躓いてしまっているのかをご提示して頂くと
回答が付きやすくなると思われます。
・ツリー全体表示

【8282】クエリのデータ参照
質問  ハジメ  - 06/7/17(月) 15:30 -

引用なし
パスワード
   ACCESSの初心者です。
テーブルから同一得意先No.のデータを集計してクエリを作成しました。
そして次の処理で作成したクエリを得意先No.で集計結果を参照したいのですが
コードの書き方が分かりません。テーブルを参照するSQLでは上手くできるのですが
クエリを参照するコードの書き方が分かりません。
初歩的な質問ですが、どなたかお教え下さい。お願いします。
・ツリー全体表示

【8281】Re:新規に入力する際に自動連番にしたいん...
質問  YUU  - 06/7/17(月) 13:13 -

引用なし
パスワード
   ▼Gin_II さん:
>勝手に変更されることはないと思いますけど^^;
>
>親フォームで商品区分CDを変更しているとか、ないですか?

親フォームの、コンボボックスで商品区分CDを選ぶと子フォームに商品リストが出てくるようになっているだけなんですが・・・その時に、特に多いのが一番上にある商品名の区分CDが、次にまた、商品区分CDを選ぶとその区分CDに変わってるんです。 

親 <商品区分CD> 100 魚
子 <商品リスト> 1001 ハマチ
         1002 マグロ
         1003 ヒラメ

親 <商品区分CD> 200 野菜
子 <商品リスト> 1001 ハマチ
         2001 キャベツ
         2002 レタス

となっているんです。 その時、商品名のテーブルを確認しても、区分CDが
100 →200へ変更になっています。
・ツリー全体表示

【8280】Re:新規に入力する際に自動連番にしたいん...
回答  Gin_II  - 06/7/17(月) 2:44 -

引用なし
パスワード
   > 今度は、勝手に商品名の商品区分CDが変更になっているんです。
> 商品区分CDを固定する事って出来ないんですか?

勝手に変更されることはないと思いますけど^^;

親フォームで商品区分CDを変更しているとか、ないですか?
・ツリー全体表示

【8279】Re:新規に入力する際に自動連番にしたいん...
質問  YUU  - 06/7/16(日) 21:45 -

引用なし
パスワード
   ▼Gin_II さん:
返事が遅くなりましてすいません。言われたとおりにしてみると自動に入り解決出来たのですが、今度は、勝手に商品名の商品区分CDが変更になっているんです。
商品区分CDを固定する事って出来ないんですか?

<商品CD> <商品名> <商品区分CD>
1001   キャベツ   100

だったのが、コンボボックスで商品区分CDを選んでいると、

<商品CD> <商品名> <商品区分CD>
1001   キャベツ   200

に変わっているんです。
・ツリー全体表示

【8278】Re:リストボックスからのテーブル名指定
お礼  shin  - 06/7/16(日) 21:03 -

引用なし
パスワード
   Gin_II さん
こんばんは。

何時もご返信頂きまして有り難うございます。

私自身が難しく考えすぎてしまい、この様な単純な質問をしてしまいました。
返信頂いた後で、もう少し確認後投稿すれば良かったと反省しております。
これに懲りずに、今後もご指導下さい。
・ツリー全体表示

【8277】Re:連想配列
回答  YU-TANG WEB  - 06/7/16(日) 18:09 -

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

▼じゃんく さん:
>Set collection = CreateObject("Scripting.Dictionary")

Collection は VBA ライブラリに標準で含まれている組み込みの
クラス名ですよ。
変数名には使わないようにしましょう。
・ツリー全体表示

【8276】Re:連想配列
回答  Gin_II  - 06/7/16(日) 17:24 -

引用なし
パスワード
   >collection.Addの時点でエラーが出てしまいます。

エラーメッセージは?
また、実際のコードは??


>OS   : WindowsXP Professional
>ACCESS : 2007 Beta

これと同じ環境で、

  Dim objDic   As Object
  
  Set objDic = CreateObject("Scripting.Dictionary")
  With objDic
    .Add 1, "AAA"
    .Add 2, "BBB"
    .Add 3, "CCC"
  End With
  
  Debug.Print objDic.Item(1)

  Set objDic = Nothing

としたら、使えましたよ。
・ツリー全体表示

【8275】Re:リストボックスからのテーブル名指定
回答  Gin_II  - 06/7/16(日) 17:05 -

引用なし
パスワード
   Me!リストボックス名

じゃ、できないということでしょうか?
そうであれば、リストボックスの
 値集合ソース
 連結列
 列数
あたりのプロパティがどうなっているのかを提示してください。
・ツリー全体表示

【8274】連想配列
質問  じゃんく  - 06/7/16(日) 15:08 -

引用なし
パスワード
   連想配列が利用できなくて困っています。

VBA 連想配列で検索した結果
Set collection = CreateObject("Scripting.Dictionary")
で、利用できそうな感じだったのですが

collection.Addの時点でエラーが出てしまいます。

どなたか他に利用する方法をご存知であればお願いします。

OS   : WindowsXP Professional
ACCESS : 2007 Beta
・ツリー全体表示

【8273】リストボックスからのテーブル名指定
質問  shin  - 06/7/16(日) 13:43 -

引用なし
パスワード
   申し訳ありませんが、又ヒントを御教授下さい。

希望すること
リストボックスをダブルクリック時に、該当テーブルをオープンしたい。

1年のデータをCopyObjectを使って、別名で保存しています。
この保存されたテーブルを、
MsysObjectsを使ってリストボックスに表示することは出来たのですが、
該当テーブルを開く方法が解りません。
column等も試したのですが、「オブジェクトが見つかりません」のエラーが出ます。

テーブルの指定方法等を御教授下さい。
・ツリー全体表示

【8272】Re:DAOで集合関数の値を取得したい
お礼  かめ  - 06/7/16(日) 8:22 -

引用なし
パスワード
   ▼よろずや さん:
>>>MsgBox DCount("*", "t")
>>>
>>>でも、レコード数を求めることはできますよ。
>
>>ただそのフォームf上にあるテキストボックスtextに入力された値を
>>aフィールドの抽出条件にする場合(テキストボックスに入力された
>>aフィールドの値だけをcountさせたい場合がDcountでは
>>うまくいきませんでした。
>
>Dcount関数の第3引数をヘルプで確認しましょう。


できました。

みなさんありがとうございました。
・ツリー全体表示

【8271】Re:DAOで集合関数の値を取得したい
回答  よろずや  - 06/7/15(土) 11:26 -

引用なし
パスワード
   >>MsgBox DCount("*", "t")
>>
>>でも、レコード数を求めることはできますよ。

>ただそのフォームf上にあるテキストボックスtextに入力された値を
>aフィールドの抽出条件にする場合(テキストボックスに入力された
>aフィールドの値だけをcountさせたい場合がDcountでは
>うまくいきませんでした。

Dcount関数の第3引数をヘルプで確認しましょう。
・ツリー全体表示

【8270】Re:DAOで集合関数の値を取得したい
質問  かめ  - 06/7/15(土) 10:43 -

引用なし
パスワード
   ▼Gin_II さん:
>> DAOを利用してVBAでSQLを書きそこで取得したテーブルtのレコード数を
>> 変数hに格納しmsgbox(h)として表示させたいのですが。
>
>DAO にこだわる理由は?
>
>MsgBox DCount("*", "t")
>
>でも、レコード数を求めることはできますよ。
>
>
>Dim db As DAO.Database
>Dim rs As DAO.Recordset
>Dim h As Long
>
>Set db = Currentdb
>Set rs = db.OpenRecordset("SELECT COUNT(*) AS FLD FROM t", dbOpenSnapshot)
>
>h = rs!FLD
>
>MsgBox h


Gin_II さんありがとうございました。
無知な私にご指導いただきありがとうございます。

上記のコードをフォームf上のコマンドボタンに書きそのコマンドボタンを押した
時にメッセージボックスで表示させることができました。

ただそのフォームf上にあるテキストボックスtextに入力された値をaフィールドの抽出条件にする場合(テキストボックスに入力されたaフィールドの値だけをcountさせたい場合がDcountではうまくいきませんでした。

また、おしえていただいたコードで
Set rs = db.OpenRecordset("SELECT COUNT(*) AS FLD FROM t where a = forms!f!text", dbOpenSnapshot)のようにするとエラーになります。

where a = forms!f!textの書き方が間違っていると思いますが。

フォーム上のテキストボックスに入力された値を集合計算のフィールド抽出条件にする場合はどのように書いたらよいのでしょうか。

よろしかったら教えていただけないでしょうか。
・ツリー全体表示

【8269】Re:新規に入力する際に自動連番にしたいん...
回答  Gin_II  - 06/7/15(土) 2:50 -

引用なし
パスワード
   テーブル2は、
> 商品CD  商品名 商品区分名
ではなく、
商品CD  商品名 商品区分CD
がいいのでは?

新規レコード入力時イベントあたりで

Me!商品CD = Nz(DMax("商品CD" _
        , "テーブル2" _
        , "商品区分CD=" & Me.Parent!商品区分CD), 0) + 1

とか。
・ツリー全体表示

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