過去ログ

                                Page     508
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼前のレコードを新規レコードにコピーする方法が上手くいきません。。  yatu 04/2/8(日) 22:54
   ┣Re:前のレコードを新規レコードにコピーする方法が上手くいきません。。  かみちゃん 04/2/9(月) 13:09
   ┃  ┗Re:前のレコードを新規レコードにコピーする方法が上手くいきません。。  yatu 04/2/9(月) 23:07
   ┃     ┗Re:前のレコードを新規レコードにコピーする方法が上手くいきません。。  かみちゃん 04/2/9(月) 23:19
   ┗Re:前のレコードを新規レコードにコピーする方法が上手くいきません。。  イケガミ 04/2/9(月) 17:32

 ───────────────────────────────────────
 ■題名 : 前のレコードを新規レコードにコピーする方法が上手くいきません。。
 ■名前 : yatu
 ■日付 : 04/2/8(日) 22:54
 -------------------------------------------------------------------------
   こんばんは、題名のとおり、前のレコードをコピーして新規レコードに貼り付ける方法が上手くいきません。コードは次のとおりです。

Private Sub Form_Current()
 
 Static sblncopystatus As Boolean
 If Not sblncopystatus Then
 If Me.NewRecord Then
 sblncopystatus = True
 DoCmd.RunCommand acCmdRecordsGoToPrevious
 DoCmd.RunCommand acCmdSelectRecord
 DoCmd.RunCommand acCmdCopy
 DoCmd.RunCommand acCmdRecordsGoToNew
 DoCmd.RunCommand acCmdPasteAppend
 
 sblncopystatus = False
 
 End If
 End If
 
 End Sub

本をみてそっくり真似てみたのですが、フォームの立ち上げができないのです。そのエラーの内容からして、『新規レコードに前のを貼り付けっていったって、前のレコードが無いじゃん!』のようです。エラー内容は

実行時エラー2046
コマンドまたはアクション"前のレコードへ"は無効です

とでます。

初心者ですので、とんちんかんな質問内容かもしれませんが、どなたか、どこが悪いのか、また何が足りないのか教えてもらえませんか?

 ───────────────────────────────────────  ■題名 : Re:前のレコードを新規レコードにコピーする方法が上手くいきません。。  ■名前 : かみちゃん  ■日付 : 04/2/9(月) 13:09  -------------------------------------------------------------------------
   こんにちは。かみちゃん です。

>本をみてそっくり真似てみたのですが、フォームの立ち上げができないのです。そのエラーの内容からして、『新規レコードに前のを貼り付けっていったって、前のレコードが無いじゃん!』のようです。エラー内容は
>
>実行時エラー2046
>コマンドまたはアクション"前のレコードへ"は無効です

そのとおりですので、
  If Me.NewRecord Then
の部分を
  If レコード数が0より大きくてかつ Me.NewRecord Then
のようにして、レコード数が0の場合は、「前のレコードをコピーして新規レコードに貼り付ける」ことをしないようにすればいいと思います。
「レコード数が0より大きくてかつ」がわからなければ、また質問してください。

 ───────────────────────────────────────  ■題名 : Re:前のレコードを新規レコードにコピーする方法が上手くいきません。。  ■名前 : yatu  ■日付 : 04/2/9(月) 23:07  -------------------------------------------------------------------------
   こんばんは。かみちゃんさん いけがみさん 回答ありがとうございました。

再び質問いたします。
かみちゃんさんの方法で試したのですが、かみちゃんさんのおっしゃる
>「レコード数が0より大きくてかつ」が良くわかりませんでした。

レコード数とはなんのメソッドをi入れればよいのか教えてください。

if me.?????? > 0 and me.newrecord then〜

であっていますでしょうか?

 ───────────────────────────────────────  ■題名 : Re:前のレコードを新規レコードにコピーする方法が上手くいきません。。  ■名前 : かみちゃん  ■日付 : 04/2/9(月) 23:19  -------------------------------------------------------------------------
   こんばんは。かみちゃん です。

>>「レコード数が0より大きくてかつ」が良くわかりませんでした。
>
>レコード数とはなんのメソッドをi入れればよいのか教えてください。

レコード数の取得の方法はいろいろあると思いますが・・・
こんな感じでいかがですか?

Private Sub Form_Current()
'参照URL
'http://www2.moug.net/cgi-bin/technic.cgi?acvba+TI08010021
'
' Access2000の場合、デフォルトではDAOに参照設定されていません。
' Visual Basic Editor(VBE)を開き、メニューの[ツール]−[参照設定]から、
' Microsoft DAO 3.6 Object Libraryにチェックを入れて下さい。
' その際にMicrosoft ActiveX Data Object 2.1 Libraryよりも上に、DAOの
' チェックを持ってきて下さい。
 '■ 初期設定 ■
 Dim iCnt  As Integer     'レコード件数
 Dim Rst  As DAO.Recordset  'レコードセット
 '■ レコードセットでカウント ■
 'フォームのレコードソースが「テーブル1」の場合
 Set Rst = CurrentDb.OpenRecordset("テーブル1", dbOpenSnapshot)
 If Rst.EOF = True Then
  iCnt = 0
 Else
  Rst.MoveLast
  iCnt = Rst.RecordCount
 End If
 '■ 終了処理 ■
 Rst.Close
 Set Rst = Nothing
 
 Static sblncopystatus As Boolean
 If Not sblncopystatus Then
  If iCnt > 0 And Me.NewRecord Then
 '〜以下省略〜

 ───────────────────────────────────────  ■題名 : Re:前のレコードを新規レコードにコピーする方法が上手くいきません。。  ■名前 : イケガミ  ■日付 : 04/2/9(月) 17:32  -------------------------------------------------------------------------
   >実行時エラー2046
>コマンドまたはアクション"前のレコードへ"は無効です

On Error GoTo 〜
を使ってもよさそうですね。

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