• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:yymmddを用いた管理番号のエラーについて)

エラー発生!管理番号の桁数が増える問題とは?

このQ&Aのポイント
  • Accessで管理番号追加ボタンを作成し、ボタンを押すと自動的にyymmddプラス2ケタの通し番号が払いだされるようにしていた
  • しかし、2010年になると最初に0がついてしまい、実行時エラー3022が発生する
  • 従来通り8ケタで表示できる方法があれば教えてほしい

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

大変なのは判りますがマルチポストはしないように。 もとの掲示板を参照してください。

0pleh
質問者

お礼

piroin654さま すみません。少々焦って、複数の箇所で質問してしまいました。 申し訳ありませんでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • accessからexcelへ出力時。。。

    3つのクエリを一つのエクセルシートへ出力しようとしているのですが、 3つ目が張り付きません。なんでなんでしょうか?どなたか教えてください。 Dim dbs As Database Dim rst1 As Recordset Dim rst2 As Recordset Dim rst3 As Recordset Dim intRow As Integer Dim intCell As Integer Dim xlsx As Object Set dbs = CurrentDb Set rst1 = dbs.OpenRecordset("クエリA") Set rst2 = dbs.OpenRecordset("クエリB") Set rst3 = dbs.OpenRecordset("クエリC") Set xlsx = CreateObject("Excel.Application") 'Excelオブジェクトを生成 With xlsx .ScreenUpdating = False '画面の再描画を抑止 .Workbooks.Add '新しいブックを追加 '---"クエリA"---------------------------------------------------- intRow = 1 For intCell = 1 To rst1.Fields.Count .Cells(intRow, intCell).Value = rst1.Fields(intCell - 1).Name .Cells(intRow, intCell).Interior.ColorIndex = 15 Next intCell '各レコード出力 intRow = 2 Do Until rst1.EOF For intCell = 1 To rst1.Fields.Count .Cells(intRow, intCell).Value = rst1.Fields(intCell - 1) Next intCell intRow = intRow + 1 rst1.MoveNext Loop '集計Sum For intCell = 4 To rst1.Fields.Count .Cells(intRow + 1, intCell) = "=SUM(" & Cells(2, intCell).Address & ":" & Cells(intRow, intCell).Address & ")" Next intCell ・ ・2目のクエリはOK ・ ・ ’以下3つ目のクエリ Dim intRow3 As Integer Dim intCell3 As Integer intRow3 = intRow + 5 intCell3 = 5 For intCell3 = 5 To rst3.Fields.Count .Cells(intRow3, intCell3).Value = rst3.Fields(intCell3 - 1).Name .Cells(intRow3, intCell3).Interior.ColorIndex = 15 Next intCell3 '各レコード出力 intRow3 = intRow + 6 Do Until rst3.EOF For intCell3 = 5 To rst3.Fields.Count .Cells(intRow3, intCell3).Value = rst3.Fields(intCell3 - 1) Next intCell3 intRow3 = intRow3 + 1 rst3.MoveNext Loop '---- Dim rst3RC As Integer rst3RC = intRow + 5 + rst3.RecordCount '863 '集計Sum For intCell3 = 6 To rst3.Fields.Count - 1 .Cells(rst3RC, intCell3) = "=SUM(" & Cells(rst3RC - rst3.RecordCount, intCell3).Address & ":" & Cells(rst3RC - 1, intCell3).Address & ")" Next intCell3

  • ACCESS2000VBAでエラー「型が一致しません」

    ACCESS2000で、フォーム上にボタンを作り、そのボタンをクリック時に 以下のイベント プロシージャを実行させています。 Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("採番_相談者") Dim Number rst.MoveFirst Number = rst!相談者番号 Number = Number + 1 Me.相談者NO = Number '相談者NOはフォーム上のテキストボックスです。 で上記 Set rst = dbs.OpenRecordset("採番_相談者") の所で、「実行時エラー 13 型が一致しません」とエラーになります。 テーブル:採番_相談者は、オートナンバー型のIDフィールドと相談者番号という7桁のテキスト型で ”1000001”が入っています。(ちなみに、数値型に変えても同じエラーでした。) 詳しい方教えてください。お願いします。

  • 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 処理件数の取得

    更新した件数を取ろうとしています。 下記のような処理をしている場合どう値をとればいいのでしょうか? rst.RecodCountでとろうとしたらテーブル内の件数(?)が取れてしまったようなのですが・・・ Dim rst As DAO.Recordset rst.Fields(1) = rstWork.Fields(1) rst.Update

  • フォームのテキストボックスに一番新しいテーブルの値を入れるには?

    こんにちは、VBA初心者です。アクセス2000を使用してます。 現在、フォームのテキストボックス(年月度)の初期値に、DMAXでテーブルにある(年月度)の値を入れてます。 過去の年月度を入れる時は、手入力で変更してるのですが、続けて入力したい場合、DMAXになってるので、初期値が一番新しい(年月度)になってしまいます。 これを、前回入力した(年月度)を初期値にするには、どうしたらいいでしょうか? Private Sub Form_Current() Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("年月度マスター", dbOpenDynaset) If IsNull(Me![年月度]) Then Me![年月度] = DMax("年月度", "データ") End If If Me![データID] = 0 Then Me!データID = rst![マスターデータID] + 1 rst.Edit rst![マスターデータID] = Me!データID rst.Update rst.Close End If End Sub

  • ExcelからAccess2013DBを更新する時

    Excel2013 vba-> Access2013 mdbファイル 問題点:以下のソースを実行すると、エラーが発生します。このエラーをなくしてアクセスデータベースのテーブルの情報の更新、新規追加、削除を行いたいです。 エラー内容:実行時エラー'3251' 現在のRecordsetは更新をサポートしていません。プロバイダーか、選択されたロックタイプの限界の可能性があります。 ソース: Sub 登録処理()   Dim Rst As adodb.Recordset   Dim SQL As String   Dim Rg As Range   Dim RgData As Range   Dim lngLastRow As Long   Dim RgDel As Range      On Error GoTo errH      Set RgData = mySh.Range("B2")   lngLastRow = RgData.End(xlDown).Row   Set RgData = mySh.Range(RgData, mySh.Range("AB" & lngLastRow))      SQL = "Select * from [会社管理テーブル]"   Call DBconection2   Set Rst = New adodb.Recordset   With Rst     .ActiveConnection = Cn     'SQL文でテーブル名と抽出条件を指定する     .Source = SQL     .CursorLocation = 3 ' クライアントサイドカーソルに変更     .Open        End With      Dim y As Long      Sheets("会社管理").Select      If Rst.EOF = False And Rst.BOF = False Then          For i = 1 To RgData.Rows.Count              If Cells(i + 1, 1).Value = "変更" Then         Rst.MoveFirst         Rst.Find "[施工会社ID]=" & RgData(i, 1).Value         If Rst.EOF Then                    Else           Rst.Fields("会社ID").Value = RgData(i, 2).Value           Rst.Fields("会社名").Value = RgData(i, 3).Value           Rst.Fields("フリガナ").Value = RgData(i, 4).Value              Rst.Update         End If         Cells(i + 1, 1).Value = ""       ElseIf Range(i, 1).Value = "削除" Then         Rst.MoveFirst                  Rst.Find "[会社ID]=" & RgData.Cells(i, 1).Value         If Rst.EOF Then                    Else           Rst.Delete         End If         Set RgDel = Rows(i + 1 & ":" & i + 1)         RgDel.Select         RgDel.Delete                ElseIf Range(i, 1).Value = "新規" Then         Rst.AddNew         Rst.Fields("会社ID").Value = RgData(i, 2).Value         Rst.Fields("会社名").Value = RgData(i, 3).Value         Rst.Fields("フリガナ").Value = RgData(i, 4).Value         Rst.Update         Cells(i + 1, 1).Value = ""       End If            Next i        End If exitH:      Rst.Close: Set Rst = Nothing   Call DBclose2   Exit Sub         errH:   MsgBox Err.Number & "(" & Err.Description & ")"   GoTo exitH    End Sub Sub DBconection2()   Set Cn = New adodb.Connection   Cn.Provider = "Microsoft.Jet.OLEDB.4.0"   Cn.Open modPublic.DBPATH    End Sub Function MakeDBconection() As adodb.Connection   Set Cn = New adodb.Connection   Cn.Provider = "Microsoft.Jet.OLEDB.4.0"   Cn.Open modPublic.DBPATH      Set MakeDBconection = Cn    End Function Sub DBclose2()   Cn.Close   Set Cn = Nothing End Sub Sub EraseContents(s_Rg As Range)   s_Rg.ClearContents    End Sub 誰か、解決方法がおわかりの方がいましたら、アドバイスをよろしくお願いします。

  • OpenRecordSet  他について

    Accessプロジェクトを使用しています。 Dim strSQL As String Dim DBS As Database Dim RST As DAO.Recordset Set DBS = CurrentDb Set RST = DBS.OpenRecordset("TESTDATA", dbOpenDynaset,dbReadOnly) 「実行時エラー'91': オブジェクト変数またはWithブロック変数が設定されていません。」 と出てきます。デバッグを押すと、 上記最終行でSTOPします。 次のように変更しても同じでした。 Set RST = DBS.OpenRecordset("TESTDATA") 又は Set RST = DBS.OpenRecordset("TESTDATA", dbOpenDynaset) ヘルプ等を見ると、Jetワークスペースでのみ 使用可と出てきます。 ADO,DAO,OpenRecordset等が理解しきれていないように思うのですが、 Access97(DAO?)では 何も出てこなかった上記のような内容、 何故Accessプロジェクトでは 上手くいかないのでしょうか?

  • Access2007 コンパイルエラーについて

    お世話になっております。 Access2003で問題なく使っていたプログラムを2007用accdbに変換して2007で動かしたところ、コンパイルエラーが出るようになりました。 エラー表示 コンパイルエラー:メソッドまたはデータ メンバが見つかりません。 コードは以下のとおりで(抜粋)、.Edit部分が反転します。 簡単なVBAはわかりますが、今回のエラーは何が原因かわかりませんので、ご教授いただければ幸いです。 よろしくお願いいたします。 Private Sub 元に戻す1_Click() Dim dbs As Database Dim rst1 As Recordset Dim rst2 As Recordset Dim strSQL As String Dim lngTmpVol As Long Dim lngSubVol As Long DoCmd.RunCommand acCmdSaveRecord Set dbs = CurrentDb '売上構成テーブルから画面上のb伝票コードのレコードセットを開く strSQL = "SELECT bbコード, 数量 FROM 売上構成 " & _ "WHERE b伝票コード = " & Me!b伝票コード & _ " ORDER BY 売上構成コード DESC" Set rst1 = dbs.OpenRecordset(strSQL) '売上構成の読み込みループ Do Until rst1.EOF 'カレントレコードの数量を変数に保存 lngTmpVol = rst1!数量 'カレントレコードのbbコードと画面上の社員コードで出庫履歴のレコードセットを開く strSQL = "SELECT 出庫数量, 確定数量, 返却数量 FROM 出庫履歴 " & _ "WHERE bbコード = " & rst1!bbコード & " AND 社員コード = " & Me!社員コード & _ " ORDER BY 出庫日 DESC, 出庫コード DESC" Set rst2 = dbs.OpenRecordset(strSQL) With rst2 If .RecordCount > 0 Then '出庫履歴の読み込みループ Do Until .EOF .Edit If Nz(!確定数量) >= lngTmpVol Then '数量すべてを確定数量から減算できるとき '減算後の数量を取得 lngSubVol = Nz(!確定数量) - lngTmpVol !確定数量 = IIf(lngSubVol <> 0, lngSubVol, Null) lngTmpVol = 0 Else '数量すべては確定数量から減算できないとき lngTmpVol = lngTmpVol - Nz(!確定数量) !確定数量 = Null End If .Update 'すべてを割り当てたらループを抜ける If lngTmpVol <= 0 Then Exit Do .MoveNext Loop End If .Close End With rst1.MoveNext Loop rst1.Close End Sub

  • SELECT CASEについての質問です

    以前教えていただいたコードがあるのですが どうしても分からない部分があったので質問させていただきます Private Sub Sample77()   Dim rs As ADODB.Recordset   Dim rsUP As New ADODB.Recordset   Dim i As Integer   Dim iCount As Long   iCount = 0   rsUP.Source = "SELECT * FROM 個人T WHERE 登録番号 LIKE 'ZZZZ%' ORDER BY 登録番号;"   rsUP.Open , CurrentProject.Connection, adOpenKeyset, adLockOptimistic   Set rs = rsUP.Clone(adLockReadOnly)   While (Not rsUP.EOF)     iCount = iCount + 1     Debug.Print iCount & " 件目 " & rsUP("登録番号")     rs.Filter = "[連番] = 'XXXX" & rsUP("登録番号") & "'"     If (Not rs.EOF) Then       For i = 0 To rsUP.Fields.Count - 1         Select Case rsUP.Fields(i).Name         ☆           Case "登録番号", "連番"           ☆           Case Else                  ☆             rsUP.Fields(i).Value = rs.Fields(i).Value☆         End Select       Next       rsUP.Update     End If     rsUP.MoveNext   Wend   rs.Close   rsUP.Close   Set rs = Nothing End Sub ☆の部分の動作がどうしてもわかりません。 "登録番号"と"連番"以外のフィールドを別レコードへ移動できるのですが 調べてもCASEの後にはなにか条件に当てはまった場合の処理を書く必要があると思うのですが 今回のコードにはそれが無いように思えます。 ☆の部分の動作を教えていただけないでしょうか よろしくお願いします。

  • Excel VBAでXML形式のデータを扱いたい

    SQL ServerにXML形式のデータが"1つのカラムにロングテキスト(ntext)形式で格納"されています。 このデータをExcelのVBAで取得したのは良いのですが、XML文書からタグを指定して任意の値を取得する方法がわかりません。 とりあえず以下のように普通の取得をするまでは書いてみました。 --- Sub GetXMLDataFromSQLServ() Dim CNN As ADODB.Connection Dim RST As ADODB.Recordset Dim RecCt As Long Dim strCNN As String Dim strData1 As String Dim strData2 As String Dim xmlTest As MSXML2.DOMDocument 'Connection String strCNN = "driver={SQL Server}; server=appdemo; uid=userid; pwd=password; database=database" Set CNN = New Connection CNN.ConnectionTimeout = 30 CNN.Open strCNN 'レコードセットを開く Set RST = New ADODB.Recordset RST.CursorType = adOpenStatic RST.Open "SELECT * FROM G_JOB_CONTENT;", strCNN RST.MoveFirst 'シートに出力 Do Until RST.EOF ActiveCell.Value = RST.Fields("JOB_ID") ActiveCell.Offset(0, 1).Value = RST.Fields("XML") '---(1) RST.MoveNext ' ActiveCell.Offset(1, 0).Activate Loop 'レコードセットを閉じる Set RST = Nothing '接続を閉じる Set CNN = Nothing End Sub --- (1)の部分でXMLのタグを指定し、任意のデータを得たいと考えています。 参照設定などを見て、おそらくMSXML2オブジェクトを使うのかな、というところまでは想像ついたのですけど・・・。 どなたかご教示の程をお願いいたします。

    • ベストアンサー
    • XML