アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります。

以下のようにしたいのですがうまくいきません。

F_Mainのボタンを押す

F_Sub1(F_Mainと連結していない単票形式)のTxt1の値と
F_Sub2(F_Mainと連結した単票形式)のTxt2の値を
テーブル1のTxt3、Txt4へ書込む


F_Mainのボタンには以下を既述してます。

Dim cnADO As New ADODB.Connection
Dim rsADO As New ADODB.Recordset
Dim stSql As String

Set cnADO = CurrentProject.Connection
rsADO.CursorLocation = adUseClient

stSql = "insert into テーブル1 (Txt3,Txt4) values (" & Me.F_SUB1!Txt1 & "," & Me.F_SUB2!Txt2 & ");"

cnADO.Execute stSql

cnADO.Close: Set cnADO = Nothing
-----ここまで

以下のように連結フォームのF_SUB2のみにするとテーブル1に追加できました。
stSql = "insert into テーブル1 (Txt3,Txt4) values (" & Me.F_SUB2!Txt2 & "," & Me.F_SUB2!Txt2 & ");"

非連結フォームのTxt1の値を取得できていないのだと思いますが
どのようにすればよいのかわからないのでご教示ください。

A 回答 (2件)

SQLでフォームやコントロールを参照する場合、連結か非連結かは特に影響はなかったはずなので、


疑うべきはデータ型の不一致などではないかと思います。

例えば、Txt1・Txt3は文字列、Txt2・Txt4は数値、ということはないでしょうか。
もしそうであれば、以下のようにすれば、Txt1の値がTxt3に記録されるようになると思います。

stSql = "insert into テーブル1 (Txt3,Txt4) values ('" & Me!F_SUB2!Txt1 & "'," & Me!F_SUB2!Txt2 & ");"


・・・非常に見づらい状態ですが(汗)、要は『Values (』と『"』の間、及び『& "』と『,』の間に、それぞれ「'」を
1つずつ追加して、「Me.F_SUB2!Txt1」がシングルクォーテーション(')で括られるようにしています。

※「Me.F_SUB1」と「.」で指定しても参照は可能ですが、コントロール(サブフォームを含む)であれば
 「Me!F_SUB」と「!」を指定してやった方がよいと思います。
 (例えば、うっかりフォームのプロパティと同じ名前のコントロールを作った場合などにも
  誤動作を起こしにくいのではないかと:
  同じ名前を重ねないに越したことはないのですが(汗))


・・・見当違いでしたら、ご容赦願います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
ご指摘にように、シングルクォーテーションで囲むとうまくいきました!!

今後のために質問させてください。
テキストを扱うときは、シングルクォーテーションが必須で、
数値を扱うときは、シングルクォーテーションを省略できるという
認識で問題ないでしょうか?
一応、簡単に試した感じではそのような気がしてます・・・

お礼日時:2008/01/05 11:27

No.1です。



> テキストを扱うときは、シングルクォーテーションが必須で、
> 数値を扱うときは、シングルクォーテーションを省略できる

概ね問題ないのですが・・・細かいことをいうと、
 ・テキストの場合はダブルクォーテーション「"」又はシングルクォーテーション「'」が必須
 ・数値の場合は通常はクォーテーションは使わない
ということになるかと思います。
(確認したところ、確かに数値型のフィールドに、クォーテーションで括った数字を追加
 しても、エラーは発生しないようでしたが(汗)
 なお、数値ではなく式を設定(「1+1」等)した場合は、クォーテーションで括らなければ
 演算結果の「2」が、括れば「1+1」という文字が、それぞれフィールドに追加されます:
 追加先が数値型の場合は、「"1+1"」はエラーになります)

因みに、少なくともAccessのSQLでは、テキストを扱う場合は「'」で括るよりも「"」の方が
一般的のようです。
(→クエリのデザインビューで、テキスト型のフィールドの抽出条件欄に値を入力すると、
 自動的に「"」で括られることから推測)
ただ、VBA上でSQL文を扱う場合は、SQL文自体を文字列として扱うために「"」で括る
必要があることから、前回のように「'」を使用します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A