• ベストアンサー

アクセス2013MoveNextでエラーになります

Me.Recordset.MoveFirst i = 1 While (Not Me.Recordset.EOF) Me.フィールド = i i = i + 1 Me.Recordset.MoveNext Wend >Me.Recordset.MoveNext ここで、アクセス2010ではエラーになりませんが、アクセス2013でエラーになります。 > i = i + 1 この箇所にブレークポイントを入れて1回1回ストップ、再実行させるとエラーになりません。 なぜでしょう?対処法がありましたらご教授を。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Access2013は持ち合わせていませんが Dim Rs As Dao.recordset Set Rs=Me.recordset ’または、Set Rs=Me.recordsetClone RS.MoveFirst i = 1 While (Not Rs.EOF) Rs.edit Rs("フィールド") = i i = i + 1 Rs.update Rs.MoveNext Wend だと?

situmonnsya
質問者

お礼

自己解決しました。 ご教授頂いた方法も試したのですがダメでした。 i = 1 DoCmd.GoToRecord , "", acFirst While (Me.CurrentRecord < Me.Recordset.RecordCount) Me.フールド = i i = i + 1 DoCmd.GoToRecord , "", acNext Wend これで、今のところエラーは出なくなりました。 ありがとうございます。

関連するQ&A

  • アクセス sqlで自動加算したい

    アクセス2010です 現在 Me.Filter = グループ別 Me.FilterOn = True Me.OrderBy = 速い順 Me.OrderByOn = True jj = 1 Me.Recordset.MoveFirst While (Not Me.Recordset.EOF) Me.順番 = jj jj = jj + 1 DoCmd.RunCommand acCmdSaveRecord Me.Recordset.MoveNext Wend これをSQLで jj=0 UPDATE テーブル SET 順番 = Inc(jj) Where ~~ Order ~~~~ なんて書けないですか?

  • アクセス帳票フォームのループ処理ができない

    いつもお世話になっています。 win7,Access2010 です。 帳票フォーム上にいくつかの連結フィールドがあり、A,B,Cとします。 Aには初期値が入力されています。 Bに1レコードづつ値を入力し、すべてのレコードに入力し終わった後に、 全レコードにおいて、A-Bの値をCに代入したいのです。 以下のようなコードを書きましたが、 カレントフィールドにのみ適用されます。 一括で全レコードに適用するためには、 どうすればいいのでしょうか? よろしくお願いします。 Private Sub コマンド71_Click() Dim rs As Recordset Set rs = Me.Recordset.Clone rs.MoveFirst Do Until rs.EOF Me!C = A - B rs.MoveNext Loop rs.Close MsgBox "計算が終了しました" End Sub

  • Access2010 「演算子がありません」エラー

    フォーム上に別フォームを開くボタンがあるのですが、クリックすると実行時エラーが表示されます。 実行時エラー 3075 クエリ式”コード IN(○○,××)の構文エラー 演算子がありません。 コードを数値型からテキスト型に変更したのが原因だと思います。 エラーが出ない方法を教えていただければ助かります。 よろしくお願いいたします。 Dim rst As Recordset Dim strWhere As String Set rst = Me.RecordsetClone With rst If .RecordCount = 0 Then Beep Exit Sub End If .MoveFirst strWhere = "" Do Until .EOF strWhere = strWhere & IIf(Len(strWhere) > 0, ",", "") & !コード .MoveNext Loop .Close strWhere = "コード IN (" & strWhere & ")" End With DoCmd.OpenForm "フォーム", , , strWhere

  • ACCESSのエラーで困っています

    ACCESSのVBAで以下のコードを実行するとエラーがでて困っています。 エラーは「行セットは逆方向フェッチをサポートしていません」とでます。 どこに問題があるのかをヘルプで調べても全く分かりませんでしたので、 問題点、アドバイスがあれば教えてください。 環境はACCESS2000、WIN98です。 宜しくお願いしますm(_ _)m Dim recR As New ADODB.Recordset Dim cmdR As New ADODB.Command cmdR.ActiveConnection = CurrentProject.Connection cmdR.CommandText = "~" Set recR = cmdR.Execute Do Until recR.EOF  If ~ Then   recR.MoveLast ←ここでエラーがでます  End If  recResult.MoveNext Loop

  • Access VBA 添付型フィールド

    Access VBAで添付型フィールドからファイル名を取りだしたいのですが、どのようにすればいいでしょうか? Private Sub Sample() Dim DB As DAO.Database Dim RS As DAO.Recordset Dim SQL As String   Set DB = CurrentDb SQL_1 = "SELECT * FROM ボランティア情報 ORDER BY 分野 & 団体名読み;" Set RS = DB.OpenRecordset(SQL_1, dbOpenDynaset) With RS   Do While Not .EOF   MsgBox (!写真.FileName)  ←ここでエラーが出ます。 .   MoveNext   Loop End With RS.Close Set RS = Nothing Set MDB = Nothing End Sub

  • Access2007 データ型エラーについて

    お世話になっております。 下記のVBAでコードを数値型からテキスト型に変更したところ、「抽出条件でデータ型が一致しません。」というエラーが出ました。 デバッグをクリックすると、dbs.Execute strSQLの部分が黄色に反転しています。 VBAはあまり詳しくありませんので、エラーが出なくなる方法を教えていただければ助かります。 よろしくお願いいたします。 Private Sub 在庫差引_Click() Dim dbs As Database Dim rst As Recordset Dim strSQL As String Set dbs = CurrentDb Set rst = Me!サブフォーム.Form.RecordsetClone With rst .MoveFirst Do Until .EOF strSQL = "UPDATE マスター " & _ "SET 在庫数 = NZ(在庫数) - " & Nz(!数量, 0) & " " & _ "WHERE コード = " & !コード dbs.Execute strSQL .MoveNext Loop .Close End With End Sub

  • ACCESS ADOのMovePreviousについて

    毎度お世話になっております。 ACCESS2003を使用しています。 ACCESS ADOにて、レコードセットがeofになった後、 MovePreviousをし、MoveNextをし、 さらにもう一度MovePreviousをすると、 最終レコードの一つ前に戻ってしまいます。 テーブル1 フィールド1 フィールド2    1     あ    2     い    3     う    4     え    5     お コード Sub test()   Dim cn As New ADODB.Connection   Dim rs As New ADODB.Recordset   Set cn = CurrentProject.Connection   rs.Open "select * from テーブル1 order by フィールド1", cn, adOpenDynamic, adLockReadOnly   Do Until rs.EOF    rs.MoveNext   Loop   rs.MovePrevious   Debug.Print rs.Fields("フィールド1").Value   rs.MoveNext   rs.MovePrevious   Debug.Print rs.Fields("フィールド1").Value   rs.Close: Set rs = Nothing   cn.Close: Set cn = Nothing End Sub 一度目のdebug.printは5に、 二度目のdebug.printは4になります。 このような仕組みなのでしょうか。 ご教授お願いいたします。

  • ADOでエクセルを読む時にフィールドを序数でアクセスしたい

    開発環境はVC++.Net Office2000 SDK開発  お世話になります。 ExcelをADOを使い中身を見ようとしているのですが、 フィールド名が無いので序数でフィールドにアクセスしようとしていますが 「要求された名前、または序数に対応する項目がコレクションで見つかりません」 とエラーが出てしまいます。 GetItemに序数を入れているつもりなのですがうまく行きません。 ただ、列名を入れればアクセスできるので、序数の指定以外は問題ないと思っています。 プログラムは以下のようにしていますが、何か解決の糸口はありませんか? TESTHRxls(lpRecordset.CreateInstance(__uuidof(Recordset))); TESTHRxls(lpRecordset->Open(bsCommand,bsConn,adOpenDynamic,adLockPessimistic,adCmdText)); lpRecordset->MoveFirst();//先頭へ移動 while(!(lpRecordset->EndOfFile)){ vIndex=1; _bstr_t testValue = lpRecordset->Fields->Count; int testValue2 = lpRecordset->Fields->GetItem(vIndex)->Value; lpRecordset->MoveNext(); }//--while(!(lpRecordset->EndOfFile)){ lpRecordset->Close();

  • accessでブランクを取得したい

    フォームをオープンするタイミングであるフィールドのデータの中にブランクがあります。 そのブランク数を計算しテキストボックスに出したい。 以前に”無”の数を計算してテキストボックスに出すVBAを教えてもらいましたが、 そのまねをしてみましたが出来ません。良い知恵を教えてください。 Private Sub Form_Current() Dim ab As DAO.Recordset Dim j As Long Set ab = Me.RecordsetClone j = 0 ab.MoveFirst Do Until ab.EOF If ab!貸与対象者 = "isNull " Then j = j + 1 End If ab.MoveNext Loop Me!残数 = j ab.Close: Set ab = Nothing End Sub 上記のようにしてみましたが、出来ません。 宜しくお願い致します。 貸与対象者→フィールド ○○○○○ ×××××    ←ブランク ■■■■■ 残数→テキストボックス 以上です。

  • ODBC--リンクテーブル'XXXX'での更新に失敗しました

    同じ現象がなさそうでしたので質問させていただきます。 インポートしたテーブルであれば問題なくレコードの更新が出来るのですが 実際のODBCで繋いだDBでは「ODBC--リンクテーブル'XXXX'での更新に失敗しました」となってしまいます。 DAOとADO両方試してみました。以下のものになります こちらは教えていただいたものです。 Private Sub Sample3() Dim rs As New ADODB.Recordset Dim i As Integer Const フィールド名 As String = "連番" ' ☆1 Const テーブル名 As String = "元テーブル" ' ☆1 Const 抽出 As String = "登録番号" ' ☆1 Const 並び替え As String = "登録番号" ' ☆1 i = 1 rs.Source = "SELECT " & フィールド名 & " FROM " & テーブル名 & _ " WHERE " & 抽出 & " LIKE 'ZZZZ%' ORDER BY " & 並び替え & ";" rs.Open , CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic While (Not rs.EOF) rs(フィールド名) = "ZZZZ" & Format(i, "0000") rs.Update rs.MoveNext i = i + 1 Wend rs.Close End Sub ADOだからダメなのかと思い こちらは教えて頂いたものをDAOにしてみました。 Private Sub Sample3() Dim Db As DAO.Database Dim rs As DAO.Recordset Dim i As Integer Const フィールド名 As String = "連番" ' ☆1 Const テーブル名 As String = "元テーブル" ' ☆1 Const 抽出 As String = "登録番号" ' ☆1 Const 並び替え As String = "登録番号" ' ☆1 i = 1 Set Db = CurrentDb() Set rs = Db.OpenRecordset("SELECT " & フィールド名 & " FROM " & テーブル名 & " WHERE " & 抽出 & " LIKE 'ZZZZ*' ORDER BY " & 並び替え & ";") While (Not rs.EOF) rs.Edit rs(フィールド名) = "ZZZZ" & Format(i, "0000") rs.Update rs.MoveNext i = i + 1 Wend rs.Close End Sub 両方とも「ODBC--リンクテーブル'XXXX'での更新に失敗しました」 となってしまいます。 どうすれば更新に失敗せずにできるのでしょうか?