過去ログ

                                Page      97
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼AddNewを使用してレコードを追加したいのですが。  まさ 02/11/8(金) 17:05
   ┣上記の追記です  まさ 02/11/8(金) 17:09
   ┗Re:AddNewを使用してレコードを追加したいのですが。  イケガミ 02/11/8(金) 17:19
      ┗Re:AddNewを使用してレコードを追加したいのですが。  まさ 02/11/8(金) 18:28
         ┗Re:AddNewを使用してレコードを追加したいのですが。  yu- 02/11/8(金) 18:39
            ┗Re:AddNewを使用してレコードを追加したいのですが。  まさ 02/11/8(金) 19:37
               ┗Re:AddNewを使用してレコードを追加したいのですが。  yu- 02/11/9(土) 0:23
                  ┗Re:AddNewを使用してレコードを追加したいのですが。  まさ 02/11/11(月) 9:49
                     ┗Re:AddNewを使用してレコードを追加したいのですが。  イケガミ 02/11/11(月) 11:24
                        ┗Re:AddNewを使用してレコードを追加したいのですが。  まさ 02/11/11(月) 18:53
                           ┗Re:AddNewを使用してレコードを追加したいのですが。  イケガミ 02/11/11(月) 23:03
                              ┗Re:AddNewを使用してレコードを追加したいのですが。  まさ 02/11/12(火) 18:14
                                 ┗Re:AddNewを使用してレコードを追加したいのですが。  イケガミ 02/11/12(火) 18:19
                                    ┗Re:AddNewを使用してレコードを追加したいのですが。  まさ 02/11/12(火) 19:08
                                       ┗Re:AddNewを使用してレコードを追加したいのですが。  イケガミ 02/11/12(火) 19:58
                                          ┗ありがとうございました。  まさ 02/11/13(水) 9:12

 ───────────────────────────────────────
 ■題名 : AddNewを使用してレコードを追加したいのですが。
 ■名前 : まさ <m-amemiya@globalstaff.co.jp>
 ■日付 : 02/11/8(金) 17:05
 -------------------------------------------------------------------------
   みなさまこんにちは。
以前何度かExcelVBAでお世話になりました。
久しぶりにきてみたらリニューアルされていたのでびっくりです。

本題に入りますが、
初歩的な質問で申し訳ないのですが、表題の通りAddNewを使って
レコードを追加したいのですが、どうもうまくいきません。

入力用のフォームを作り、テキストボックスは非連結にしてあります。
登録ボタンを配置しクリックしたら登録されるようにしたいです。
見よう見まねで本を見ながら作ってみたのですが、
全くうまくいきません。

過去ログを検索して、見ているのですが私の力ではいまいち理解できません。
http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=one;no=1725;id=Access

テーブルの項目
日付
名前
電話番号

等があります。入力フォームもそれに併せてテキストボックス名は同じ名前にしました。
初歩的な質問ですがどなたかご教授頂けないでしょうか。
よろしくお願い致します。

ちなみに別件なのですが、質問をさせて頂いてもよろしいでしょうか?
ルール違反でしたら申し訳ありません。
コンボボックスについてですが、
コードの列と商品名の列を2つ表示させています。
連結列は2列目に指定してあります。
選択したときに表示される列も2列目にしたいのですが
どのようにすればよろしいのでしょうか。
合わせましてよろしくお願い致します。

 ───────────────────────────────────────  ■題名 : 上記の追記です  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/8(金) 17:09  -------------------------------------------------------------------------
   環境はWinNT Access2000です。
よろしくお願い致します。

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/11/8(金) 17:19  -------------------------------------------------------------------------
   >レコードを追加したいのですが、どうもうまくいきません。

>全くうまくいきません。
では、回答のしようがありませんが。。
エラーがでるのか、単に結果が変わらないのかも判断できません。

ブレイクポイントを設定して、どこがおかしいのかデバッグしてください。


>選択したときに表示される列も2列目にしたいのですが
隣にテキストボックスを作成して、コンボボックスの更新後イベントで

Me!テキストボックス名 = Me!コンボボックス名.Column(1)
としてはいかがでしょうか?

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/8(金) 18:28  -------------------------------------------------------------------------
   >>レコードを追加したいのですが、どうもうまくいきません。
>
>>全くうまくいきません。
>では、回答のしようがありませんが。。
>エラーがでるのか、単に結果が変わらないのかも判断できません。
>
>ブレイクポイントを設定して、どこがおかしいのかデバッグしてください。

申し訳ありません。
説明不足でした。

一応、本をみて作ってみたものです。
というより、項目名を変えただけです。

Dim mydata(0 To 2) As Variant


Private Sub 登録btn_Click()
Dim db As Database
Dim rst As Recordset

  Set db = CurrentDb
  Set rst = db.openrecordset("T_main")
  
  rst.AddNew
  rst.Fields("入力日").Value = mydata(0)
  rst.Fields("仮登録日").Value = mydata(1)
  rst.Fields("整理番号").Value = mydata(2)
  rst.Update
  
  rst.Close
  
  msg "登録しました"
  DoCmd.Close.acForm , "F_nyuryoku", acSaveNo
  
End Sub

Private Sub 入力日_BeforeUpdate(Cancel As Integer)
  mydata(0) = 入力日.Text
End Sub

以下省略

実行すると
Dim db As Database
ここのところで
「コンパイルエラー ユーザー定義域は定義されていません」
とエラーがでます。
As Database
という意味がよく分からないのですが、とりあえず本のとおりに打ちました。
本当に初歩的なことだと思うのですが。
よろしくお願い致します。

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : yu-  ■日付 : 02/11/8(金) 18:39  -------------------------------------------------------------------------
   ▼まさ さん:
>Private Sub 登録btn_Click()
>Dim db As Database
>Dim rst As Recordset
>
>  Set db = CurrentDb
>  Set rst = db.openrecordset("T_main")
>  
>  rst.AddNew
>  rst.Fields("入力日").Value = mydata(0)
>  rst.Fields("仮登録日").Value = mydata(1)
>  rst.Fields("整理番号").Value = mydata(2)
>  rst.Update

Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("T_main", dbOpenDynaset)
'"T_main"にはSelect分を指定してもかまいせん
' dbOpenDynasetで更新用でレコードを開いています

With rst
  .Fields("入力日").Value = mydata(0)
  .Fields("仮登録日").Value = mydata(1)
  .Fields("整理番号").Value = mydata(2)
  .Update
End Eith

ってな感じで更新できませんか?

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/8(金) 19:37  -------------------------------------------------------------------------
   >
>Dim rst As DAO.Recordset
>
>Set rst = CurrentDb.OpenRecordset("T_main", dbOpenDynaset)
>'"T_main"にはSelect分を指定してもかまいせん
>' dbOpenDynasetで更新用でレコードを開いています
>
>With rst
>  .Fields("入力日").Value = mydata(0)
>  .Fields("仮登録日").Value = mydata(1)
>  .Fields("整理番号").Value = mydata(2)
>  .Update
>End Eith
>
>ってな感じで更新できませんか?

yu-さま
ありがとうございます。
早速試してみましたところ

Dim mydata(0 To 3) As Variant

Private Sub 登録btn_Click()
  Dim rst As DAO.Recordset

  Set rst = CurrentDb.OpenRecordset("T_main", dbOpenDynaset)
  '"T_main"にはSelect分を指定してもかまいせん
  ' dbOpenDynasetで更新用でレコードを開いています

  With rst
    .Fields("入力日").Value = mydata(0)
    .Fields("仮登録日").Value = mydata(1)
    .Fields("整理番号").Value = mydata(2)
    .Update
  End With
  
  rst.Close
  
  msg "登録しました"
  DoCmd.Close.acForm , "F_nyuryoku", acSaveNo
  
End Sub


Dim rst As DAO.Recordset
ここのところで引っかかってしまいました。
「コンパイルエラー ユーザ定義型は定義されていません」
とでてしまいます。

どのように解決したらいいのか分かりません。
お暇な時でかまいませんのでよろしくお願い致します。

(今日はもう失礼させて頂きます。また月曜日にきます。
週末勉強してみます。)

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : yu-  ■日付 : 02/11/9(土) 0:23  -------------------------------------------------------------------------
   ▼まさ さん:
>Dim rst As DAO.Recordset
>ここのところで引っかかってしまいました。
>「コンパイルエラー ユーザ定義型は定義されていません」
>とでてしまいます。

ツール→参照設定で"Microsoft DAO3.6 Object Library"
をクリックしてもう一回コードを試してみてください

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/11(月) 9:49  -------------------------------------------------------------------------
   >ツール→参照設定で"Microsoft DAO3.6 Object Library"
>をクリックしてもう一回コードを試してみてください

何度も申し訳ございません。
もう少し質問させてください。

ツール→参照設定で
"microdoft DAO3.5 Object Library"
しかありませんでした。
"DAO3.6"ではないのですがよろしいのでしょうか。
一応 "DAO3.5"にチェックをして試してみたのですが、

Dim mydata(0 To 3) As Variant

Private Sub 登録btn_Click()
  Dim rst As DAO.Recordset

  Set rst = CurrentDb.OpenRecordset("T_main", dbOpenDynaset)
  
  With rst
    .Fields("入力日").Value = mydata(0)
    .Fields("仮登録日").Value = mydata(1)
    .Fields("整理番号").Value = mydata(2)
    .Update
  End With

  rst.Close
  
  MsgBox "登録しました"
  DoCmd.Close.acForm , "F_nyuryoku", acSaveNo
  
End Sub

こんどは、
DoCmd.Close.acForm , "F_nyuryoku", acSaveNo
この文の ".Close"ここのところで引っかかりました。

試しに、
MsgBox "登録しました"
DoCmd.Close.acForm , "F_nyuryoku", acSaveNo
ここを全部消して試したのですが、

.Fields("入力日").Value = mydata(0)
この文の ".Fields"ここで引っかかってしまいました。

誠に恐縮ですが何卒よろしくお願い致します。

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/11/11(月) 11:24  -------------------------------------------------------------------------
   >ツール→参照設定で
>"microdoft DAO3.5 Object Library"
>しかありませんでした。
Access2000なら、DAO3.6があると思いますけど。。
新規mdbファイルで試しても、ありませんか?

>    .Fields("入力日").Value = mydata(0)
フィールド名はあっていますか?
あっているのなら、mydata(0)の内容は?

>  DoCmd.Close.acForm , "F_nyuryoku", acSaveNo
DoCmd.Close acForm〜
ですね。(acForm の前の"."が不要です。)

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/11(月) 18:53  -------------------------------------------------------------------------
   イケガミ様返信ありがとうございます。
>>ツール→参照設定で
>>"microdoft DAO3.5 Object Library"
>>しかありませんでした。
>Access2000なら、DAO3.6があると思いますけど。。
>新規mdbファイルで試しても、ありませんか?
>
すみません。ありました。見落としていたようです。

>>    .Fields("入力日").Value = mydata(0)
>フィールド名はあっていますか?
>あっているのなら、mydata(0)の内容は?
>
すみません。ここの所が分かりません。
フィールド名というのはテーブルのフィールド名でよろしいのでしょうか。
mydata(0)の内容は、どこを確認すればよいのでしょうか。

>>  DoCmd.Close.acForm , "F_nyuryoku", acSaveNo
>DoCmd.Close acForm〜
>ですね。(acForm の前の"."が不要です。)

なおしました。

度々の質問(しかも初歩的な)本当に申し訳ございません。
お手があいたときで構いませんのでよろしくお願いいたします。

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/11/11(月) 23:03  -------------------------------------------------------------------------
   >すみません。ここの所が分かりません。
>フィールド名というのはテーブルのフィールド名でよろしいのでしょうか。
>mydata(0)の内容は、どこを確認すればよいのでしょうか。

フィールド名はテーブルのフィールド名のことでいいです。
レコードセットで開いているテーブルに、該当するフィールドはありますか?

mydata(0) の内容は、

Debug.Print mydata(0)
を入れるか、ブレイクポイントを設定して実行するなどすれば、確認できます。
数値型のフィールドに、文字列を入れればエラーになりますので、
そういったことがないか?の確認をしてください。

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/12(火) 18:14  -------------------------------------------------------------------------
   イケガミさま

>フィールド名はテーブルのフィールド名のことでいいです。
>レコードセットで開いているテーブルに、該当するフィールドはありますか?
>
>mydata(0) の内容は、
>
>Debug.Print mydata(0)
>を入れるか、ブレイクポイントを設定して実行するなどすれば、確認できます。
>数値型のフィールドに、文字列を入れればエラーになりますので、
>そういったことがないか?の確認をしてください。

ご回答ありがとうございます。

確認をしてみてはいるのですが、どうにも分かりません。
どこかおかしいところがあると思うのですが。

Dim mydata(1) As Variant

Private Sub 登録btn_Click()
  Dim rst As DAO.Recordset

  Set rst = CurrentDb.OpenRecordset("T_main", dbOpenDynaset)
  
  With rst
    .Fields("入力日").Value = mydata(1)
    .Update
  End With

  rst.Close
  
  MsgBox "登録しました"
  DoCmd.Close acForm, "F_nyuryoku", acSaveNo
  
End Sub

テーブル名 "T_main" 
フィールド名 "入力日"(テキスト型)

入力用フォーム名 "F_nyuryoku" 
テキストボックス名 "入力日"(書式等未設定)
コマンドボタン名 "登録btn"

です。

実行すると、
"Update または CancelUpdate メソッドには、対応する AddNew または
Edit メソッドが必要です"

と出てきて

.Fields("入力日").Value = mydata(1)
が黄色くなります。

もし原因が不明なようでしたらあきらめます(T-T)

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/11/12(火) 18:19  -------------------------------------------------------------------------
   >  With rst
.AddNew
>    .Fields("入力日").Value = mydata(1)
>    .Update
>  End With

が、抜けていますね。(レコード追加でいいのですよね?)

あと、この処理が流れるときには、mydata(1) には、ちゃんと
データが入っていますよね?

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/12(火) 19:08  -------------------------------------------------------------------------
   イケガミさま

早速のお返事ありがとうございます。
うまくいきました。といいたいところなのですが、
レコードは追加されているのですが、
空のレコードになってしまいます。

>あと、この処理が流れるときには、mydata(1) には、ちゃんと
>データが入っていますよね?

多分ここでおっしゃっている部分だと思うのですが、

With rst
.AddNew
.Fields("入力日").Value = mydata(1)
.Update
End With

たしかにこのままだと"mydata(1)"はフォームのどの値なのか
解らないですよね。
mydata(1)の値を定義してあげなくてはならないということでしょうか。

試しに今回これを作るときに参考にした本には

Private Sub 入力日_BeforeUpdate(Cancel As Integer)
  mydata(1) = 入力日.Text
End Sub

この文が最後に入っていたので足してみたのですがだめでした。
(意味も分からず本の通り足してみました)

あと、
Private Sub 登録btn_Click()
  Dim rst As DAO.Recordset

ここの下に
  mydata(1) = 入力日.Text
を足してみたのですがだめでした。

お時間のある時にでもご教授頂ければと思います。
よろしくお願いします。

 ───────────────────────────────────────  ■題名 : Re:AddNewを使用してレコードを追加したいのですが。  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/11/12(火) 19:58  -------------------------------------------------------------------------
   >たしかにこのままだと"mydata(1)"はフォームのどの値なのか
>解らないですよね。
>mydata(1)の値を定義してあげなくてはならないということでしょうか。
>
>試しに今回これを作るときに参考にした本には
>
>Private Sub 入力日_BeforeUpdate(Cancel As Integer)
>  mydata(1) = 入力日.Text
mydata(1) = 入力日.Value

に変更してみてください。

 ───────────────────────────────────────  ■題名 : ありがとうございました。  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/13(水) 9:12  -------------------------------------------------------------------------
   イケガミ さま

>mydata(1) = 入力日.Value
>
>に変更してみてください。

できました!

長々と申し訳ございませんでした。
丁寧にご指導頂きましてありがとうございました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 97