20日締、末締


x = Date

'締日 = "15日;20日;25日;末日"

'支払日 = "翌10日;翌20日;翌25日;翌末日;翌々5日;翌々10日"

Me.売掛先CD.SetFocus

aa = 売掛先CD.Value

rs6.CursorLocation = adUseServer

rs6.CursorType = adOpenStatic

rs6.LockType = adLockOptimistic

rs6.Open "SELECT * from 売掛先M WHERE 売掛先CD = '" & aa & "' ", CN, , , adCmdText

If rs6.EOF Then Exit Sub

y = rs6.Fields("締日").Value

z = rs6.Fields("支払日").Value

'****************************

If y = "末日" Then yy = DateAdd("d", -1, DateSerial(Year(x), Month(x) + 1, 1))

If y = "20日" Then

If Day(x) > 20 Then

yy = DateSerial(Year(x), Month(x) - CInt(20 = 0) + 1, 20)

Else

yy = DateSerial(Year(x), Month(x) - CInt(20 = 0) + 0, 20)

End If

End If

If y = "15日" Then

If Day(x) > 15 Then

yy = DateSerial(Year(x), Month(x) - CInt(15 = 0) + 1, 15)

Else

yy = DateSerial(Year(x), Month(x) - CInt(15 = 0) + 0, 15)

End If

End If

If y = "25日" Then

If Day(x) > 25 Then

yy = DateSerial(Year(x), Month(x) - CInt(25 = 0) + 1, 25)

Else

yy = DateSerial(Year(x), Month(x) - CInt(25 = 0) + 0, 25)

End If

End If

'******************************

If z = "翌末日" Then zz = DateAdd("d", -1, DateSerial(Year(x), Month(x) + 2, 1))

If z = "翌20日" Then

If Day(x) > 20 Then

zz = DateSerial(Year(x), Month(x) - CInt(20 = 0) + 2, 20)

Else

zz = DateSerial(Year(x), Month(x) - CInt(20 = 0) + 1, 20)

End If

End If

インポ-ト処理


DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "仮", Me.名前.Value, True

30 インポ-ト処理(注意)---これは、もとデータがEXCELのフアイルをインポート処理する


 

オプションボタン使用時の例

If IsNull(Me.検索) Then Exit Sub

Me.検索.SetFocus

B = Me.検索.Value

x = Me.選択.Value

Select Case x

Case 1

rs.Open "SELECT * from 受注 WHERE お客様 like '" & "%" & B & "%" & "'", conn, , , adCmdText

Case 2

rs.Open "SELECT * from 受注 WHERE メールアドレス like '" & "%" & B & "%" & "'", conn, , , adCmdText

End Select

If rs.EOF = True Then Exit Sub

B----入力する項目

x-----オプショングループの名前

 

コンボボックスを2個連動して使用する場合  2個目のデータが必ず 最初の内容の変化に対応できるようにしる

Private Sub 商品CD_Enter()

Me.Refresh

End Sub

 

SELECT文で抽出したデータをINSERT文で登録する

With cmd

    .CommandText = "INSERT INTO PC修理管理表 (伝票番号,お客様名,メーカ名,商品名,型番,SN,障害内容,バーコード,登録日,発行者,家電かPCか,登録番号1,登録番号2) (SELECT 伝票番号,お客様名,メーカ名,商品名,型番,SN,コメント,バーコード,'" & b & "','" & c & "'," & d & ",'" & Format(e, "00000000") & "','" & Format(f, "0000") & "' from 修理管理表 WHERE 伝票番号 = '" & a & "')"

    .CommandType = adCmdText

    .Execute

  End With

 

SQL文を複数行で作成し、実行時

Dim strSQL1 As String

    

     strSQL1 = "UPDATE 実績表 SET 工事 = '" & Me.工事 & "',名称 = '" & Me.名称 & "',単価 = '" & Me.単価 & "',"

     strSQL1 = strSQL1 & "単位 = '" & Me.単位 & "',数量 = " & Me.数量 & ",小計 = '" & Me.小計 & "',"

     strSQL1 = strSQL1 & "備考 = '" & Me.備考 & "'"

     strSQL1 = strSQL1 & " WHERE 請求番号 = '" & Me.請求番号 & "' and 追番 = " & Me.追番 & ""

   

      With cmd

       .CommandText = strSQL1

       .CommandType = adCmdText

       .Execute

      End With

 

MDBで、オートカウンタ最大値の取り方

Dim a As Long

rs6.Open "SELECT last(ID) as ed from 製造不良一時", CN, , , adCmdText

If rs6.EOF Then Exit Sub

a = rs6.Fields("ed")

With cmd

.CommandText = "DELETE * FROM 製造不良一時 where ID = " & a & " and 製造番号 = '" & Me.製造番号 & "'"

.CommandType = adCmdText

.Execute

End With

 

配列の例

Dim rec(99)

 ' 100項目データがセットできる

  Set cur2 = CurrentDb

  Set soc2 = cur2.OpenRecordset("SELECT * FROM 仮 Where 伝票番号 <> Null Order By 伝票番号 Asc;", dbOpenDynaset)

 

 If soc2.EOF Then Exit Function  ' 5月12日追加

 

    soc2.MoveFirst

 

   Do Until soc2.EOF

  b = soc2.Fields("伝票番号").Value

    Set con = New ADODB.Connection

   

  con.ConnectionString = "Provider=SQLOLEDB;Data Source=SERVERWCC;Initial Catalog=kansc;User ID=O3791;Password=P#m8i4;Integrated Security = SSPI;"

    

    Set rst = New ADODB.Recordset

    'If Not soc2.EOF Then

    con.Open

    Set cmd.ActiveConnection = con

   

   con.BeginTrans

    rst.Open "Select 伝票番号 From 受注オーダ Where 伝票番号 = '" & b & "';", con, adOpenKeyset, adLockOptimistic

  

       'rs2.CursorLocation = adUseServer

       'rs2.CursorType = adOpenStatic

      ' rs2.LockType = adLockOptimistic

 

    ' con.BeginTrans

    ' c = rst.Fields("伝票番号").Value

  

            rec(0) = soc2.Fields("伝票番号").Value

           

            rec(1) = soc2.Fields("先").Value

            rec(2) = soc2.Fields("区分").Value

            rec(3) = soc2.Fields("代行先").Value

            rec(4) = soc2.Fields("店舗コード").Value

            rec(5) = soc2.Fields("店舗担当").Value

  '              途中は省略

            rec(97) = soc2.Fields("CL工料込").Value

            rec(98) = soc2.Fields("CL出張代込").Value

            rec(99) = soc2.Fields("CL合計込").Value

 

条件付きで、例えば、現品カードなどを同一紙に複数印刷する場合の例

レポートにプロシジャーをセットする

Option Explicit

Dim P_COUNT As Long, SUURYO As Double

Private Sub Report_NoData(Cancel As Integer)

Cancel = True

End Sub

Private Sub Report_Open(Cancel As Integer)

P_COUNT = 1: SUURYO = 0

End Sub

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

    If P_COUNT < Me!枚数 Then

        Me.MoveLayout = True

        Me.NextRecord = False

        Me.PrintSection = True

    End If

End Sub

Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)

On Error GoTo ERR

Me!枚数S = P_COUNT

If P_COUNT = 1 Then SUURYO = Me!数量

If P_COUNT < Me!枚数 Then

    Me!SNP1 = Me!SNP

    SUURYO = SUURYO - Me!SNP

    P_COUNT = P_COUNT + 1

Else

    Me!SNP1 = SUURYO

    SUURYO = 0

    P_COUNT = 1

End If

Exit Sub

ERR:

    MsgBox ERR.Description

Exit Sub

On Error GoTo 0

End Sub

 

レポートの書式設定

同一ページ印刷グループ--------列
 

レポートのページ設定

       列数-------------------2

       印刷方向---------------上から下へ

 

WHERE にSELECT文で抽出したものを使用

     With cmd

    .CommandText = "update 受注オーダ set 印済 = '" & a & "',出荷日 = #" & b & "# where 伝票番号 in (select 伝票番号 from 印刷対象)"

    .CommandType = adCmdText

    .Execute

      End With

この場合、伝票番号は実際のデータと合っていること

 

SQL文で抽出したデータをいきなりデータの更新は不可能で主キーをWHEREにあてがう

   rs.Open "SELECT * from 入金元帳 WHERE 手形番号 = '" & Me.手形番号 & "'", conn, , , adCmdText

       rs.MoveFirst

   Do Until rs.EOF

        x = rs.Fields("CD").Value

 

     With cmd

       .CommandText = "UPDATE 入金元帳 SET 手形決済金額 = '" & Me.決済金額 & "',手形補正 = '" & Me.補正 & "',手形補正内容 = '" & Me.補正内訳 & "',手形完 = '" & 2 & "' WHERE CD = " & x & ""

       .CommandType = adCmdText

       .Execute

      End With

 

       rs.MoveNext

       Loop

 
 

ADPで、別フオームのサブフオームのRequeryする場合
(ADP-専用)

Set Forms!入力!入力子.Form.Recordset = rs

         Forms!入力.入力子.Requery

 

金額及び数字のNULL対策

 

Dim a As Currency

Me.入金明細子.Form.入金小計.SetFocus

On Error Resume Next

a = Nz(Me.入金明細子.Form.入金小計.Value, 0)

入金額 = a

 

エラー発生後のスルー

On Error Resume Next

  サブフォーム のデータを Requeryする場合      

      rs.Open "SELECT * from 図番M where 製品CD like '" & Me.検索 & "%" & "'", cn, , , adCmdText

           If rs.EOF = True Then Exit Sub

       Me.図番子.[製品CD].ControlSource = "製品CD"

        Me.図番子.[製品図番].ControlSource = "製品図番"

        Me.図番子.[品名].ControlSource = "品名"

      Set Recordset = rs

    

      Me.図番子.Requery

 

クエリーで、データベースのアクションをする場合

    DoCmd.SetWarnings False

   

    'バックアップデータ削除

    DoCmd.RunSQL "DELETE * FROM BTD_日報番号データ"

    DoCmd.RunSQL "DELETE * FROM BTD_入金ヘッダー"

    DoCmd.RunSQL "DELETE * FROM BTD_入金明細"

 

日付をテキスト形式でテーブルに格納する場合

例えば

     H21/08/28のような形式で

   b = Date

   bb = Format(b, "gee/mm/dd")------- bb が H21/08/28

  通常の形式にもどす場合

      cc = Format(bb, "yyyy/mm/dd")-------ccが 2009/08/28

 日付をテキスト形式でテーブルで保存すると 更新などはやりやすいが

 日付計算はしにくい

  If Day(cc) > 20 Then

                  yy = DateSerial(Year(cc), Month(cc) - CInt(20 = 0) + 1, 20)

            Else

                   yy = DateSerial(Year(cc), Month(cc) - CInt(20 = 0) + 0, 20)

 

データのラストデータを検出して対象のデータを削除

rs6.Open "SELECT last(番号) as ed from 宛先表", cnn, adOpenKeyset, adLockOptimistic

  If rs6.EOF Then Exit Sub

  a = Nz(rs6.Fields("ed"), 0)

  cnn.Execute "DELETE FROM 宛先表 where 番号 = " & a & ""

 

入力を指定する方法の例

If Me.科目上 = "収益" Then

   Me.買掛R.Visible = False

   Me.買掛先CD.Visible = False

   Me.買掛先名.Visible = False

   Me.売掛R.Visible = True

   Me.売掛先CD.Visible = True

   Me.売掛先名.Visible = True

   Else

   Me.売掛R.Visible = False

   Me.売掛先CD.Visible = False

   Me.売掛先名.Visible = False

   Me.買掛R.Visible = True

   Me.買掛先CD.Visible = True

   Me.買掛先名.Visible = True  

   End If

 

EXCEL出力の例

Dim myXLS As Excel.Application

Dim myWKB As Excel.Workbook

Dim myWKS As Excel.Worksheet

Dim conn As New ADODB.Connection

Dim rs  As New ADODB.Recordset

Dim rs2  As New ADODB.Recordset

Dim rs3  As New ADODB.Recordset

 

 Set conn = CurrentProject.Connection

Dim cmd As New ADODB.Command

Set cmd.ActiveConnection = conn

rs.Open "SELECT * FROM 入金 INNER JOIN 仕訳項目 ON (入金.小分類 = 仕訳項目.小分類) AND (入金.中分類 = 仕訳項目.中分類) AND (入金.大分類 = 仕訳項目.大分類) WHERE 入金日 Between #" & Me.開始日 & "# And #" & Me.終了日 & "# AND 入金.計 = '" & 1 & "' ORDER BY 入金.大分類, 仕訳項目.CD", conn, , , adCmdText

If rs.EOF Then Exit Sub

 Set myXLS = New Excel.Application

  myXLS.Visible = True           '--------------------------Workbookを開く

  Set myWKB = myXLS.Workbooks.Add

  Set myWKS = myWKB.Worksheets("sheet1")

  Dim g As Long

 

  myXLS.Cells(2, 2).Value = "期間 " & FormatDateTime(Me.開始日.Value) & "~" & FormatDateTime(Me.終了日.Value)

       

        myXLS.Cells(4, 2).Value = "中分類"

        myXLS.Cells(4, 3).Value = "小分類"

        myXLS.Cells(4, 4).Value = "摘要"

        myXLS.Cells(4, 5).Value = "金額"

        myXLS.Cells(4, 6).Value = "入金日"

        myXLS.Cells(4, 7).Value = "対象"

        myXLS.Cells(4, 8).Value = "備考"

   g = 4

rs.MoveFirst

Do Until rs.EOF

             g = g + 1    

        myXLS.Cells(g, 2).Value = rs.Fields(2)  ' ------テーブルの項目は0 よりカウントする

        myXLS.Cells(g, 3).Value = rs.Fields(3)

        myXLS.Cells(g, 4).Value = rs.Fields(4)

        myXLS.Cells(g, 5).Value = rs.Fields(8)

        myXLS.Cells(g, 6).Value = FormatDateTime(rs.Fields(9))

        myXLS.Cells(g, 7).Value = rs.Fields(12)

        myXLS.Cells(g, 8).Value = rs.Fields(11)

rs.MoveNext

 Loop

 

遅延バインデバイデングによるEXCELの開き方(Excel2013対応も)

 

 Dim myXLS As Object

 Dim myWKB As Object

 Dim myWKS As Object

Dim conn As New ADODB.Connection

Dim rs  As New ADODB.Recordset

Dim cmd As New ADODB.Command

Set conn = CurrentProject.Connection

Set cmd.ActiveConnection = conn

      On Error Resume Next

    Set myXLS = CreateObject("Excel.Application.15")

    Set myXLS = CreateObject("Excel.Application")

 

   Set myWKB = myXLS.Workbooks.Add

    Set myWKS = myWKB.Worksheets("sheet1")

    myWKS.Application.Visible = True

    myXLS.Visible = True   '--------------------------Workbookを開く

 
 

日付の設定

 

当月初日

DateSerial(Year(Forms![フォーム名]![年月日]),Month(Forms![フォーム名]![年月日]),1)

当月月末

DateSerial(Year(Forms![フォーム名]![年月日]),Month(Forms![フォーム名]![年月日])+1,0)

ですね。

(当月の月末日) DateSerial(Year(Date()),Month(Date())+1,0)

(翌月の20日) DateSerial(Year(Date()),Month(Date())+1,20)

(翌々月1日) DateSerial(Year(Date()),Month(Date())+2,1)

(翌日から数えて30日後) DateSerial(Year(Date()),Month(Date()),Day(Date())+30)

 

テキストデータのインポート例

Dim cur As Database

 Dim soc As Recordset

 

  Err.Clear

  On Error GoTo 0

 

    DoCmd.TransferText acImportDelim, , "仮", Me.取込.Value, True

  Err.Clear

  On Error Resume Next

 

  Set cur = CurrentDb

  Set soc = cur.OpenRecordset("SELECT COUNT(*) FROM " & Me.取込 & "_インポート エラー ;", dbOpenDynaset)

  If Err.Number = 0 Then

  If soc.Fields(0).Value > 0 Then MsgBox "解釈できないレコードがあります。"

  End If

  soc.Close

  Set soc = Nothing

  Set cur = Nothing

  On Error GoTo 0

 

 登録時のチエック例

    a = Me.CD

    

     b = Len(a)

    

     If b <> 5 Then Exit Sub

    

     rs4.Open "SELECT * from 仕訳項目 WHERE CD = '" & a & "'", cn, , , adCmdText

   

     If Not rs4.EOF Then

           If rs4.Fields("CD").Value = a Then

             MsgBox "コードが登録済みです。"

             Exit Sub

          End If

       End If

      

       rs2.Open "SELECT * from 仕訳項目 WHERE 大分類 = '" & Me.大分類 & "' and 中分類 = '" & Me.中分類 & "' and 小分類 = '" & Me.小分類 & "'", cn, , , adCmdText

       

       If Not rs2.EOF Then

           If rs2.Fields("大分類").Value = Me.大分類 And rs2.Fields("中分類").Value = Me.中分類 And rs2.Fields("小分類").Value = Me.小分類 Then

             MsgBox "登録済みです。"

             Exit Sub

          End If

      

       Else

        rs.Open "仕訳項目", cn, adOpenKeyset, adLockOptimistic, adCmdTableDirect

         

        rs.AddNew

        

        rs("大分類") = Me.大分類

        rs("中分類") = Me.中分類

        rs("更新日") = Date

        rs("小分類") = Me![小分類]

        rs("備考") = Me![備考]

         rs("計") = "1"

    '     rs("計") = Me![計]

         rs("CD") = Me![CD]

 

        rs.Update

         End If

        rs.Close

        Set rs = Nothing

        cn.Close

        Set cn = Nothing 
 

BeginTransとCommitTransの例

   CN.BeginTrans

      With cmd

       .CommandText = "DELETE * FROM 科目M WHERE 科目CD = '" & Me.科目CD & "'"

       .CommandType = adCmdText

       .Execute

      End With

    CN.CommitTrans

 

テキストデータのインポート

    DoCmd.TransferText acImportDelim, "IMP", "受信一時", Me.名前.Value, False

      IMP------インポートするフアイルの定義   外部にiniに出すことも可能

      受信一時---インポート後のテーブル

      名前-------インポートするフアイルがあるパス名

      False-------最初の行が項目名の場合は True

定義体の場所

   システムテーブル(ツール→オプション→システムオブジェクトにチェックしないと見えません)、

              「MSysIMEXColumns」

              「MSysIMEXSpecs」

定義体の修正など

    対象のテーブルを開き、手動で、インポートをすると、ウイザードが出てくる

     「定義(P)...」「設定(V)...」ボタンをクリックする

 

下記内容は、 クライアントに、ADPを使用し、DBは、SQLserver接続した場合のT-SQLの内容です

(ADP-専用)

 

 日付による抽出クエリー

ALTER PROCEDURE dbo.[SP入金データ抽出]

(@開始日 nvarchar(50),

@終了日 nvarchar(50))

AS SELECT dbo.入金.*, dbo.店舗M.店舗名, CONVERT(datetime, CONVERT(nvarchar,

dbo.入金.取引日, 111), 120) AS 月日

FROM dbo.入金 INNER JOIN

dbo.店舗M ON dbo.入金.[店舗コード] = dbo.店舗M.[店舗コード]

WHERE (CONVERT(datetime, CONVERT(nvarchar, dbo.入金.取引日, 111), 120) BETWEEN @開始日 AND @終了日)

(説明)フオームに、開始日、終了日のコントロールを設定

     取引日は、年月日時間分秒

     変数の月日は、年月日--------convert 2回で、変換

     where は、変数の月日を betweeen で、開始日、終了日 に対応する    例) 当日の月日に変換方法

   select convert (datetime,convert (nvarchar,getdate() ,111),120)(参考) 

SELECT CONVERT(VARCHAR(30),@GetDate(),110) --02-11-2007

SELECT CONVERT(VARCHAR(30),@GetDate(),111) --2007/02/11

SELECT CONVERT(VARCHAR(30),@GetDate(),112) --20070211

SELECT CONVERT(VARCHAR(30),@GetDate(),113) --11 02 2007 12:34:56:790

SELECT CONVERT(VARCHAR(30),@GetDate(),120) --2007-02-11 12:34:56

 

update文の例


(ADP-専用)

ALTER PROCEDURE [update_受注オーダ_1]

(@伝票番号_1 [char](20),

@自社S_2 [datetime],

@メーカS_3 [datetime],

@運送会社2_4 [char](20),

@運送伝票2_5 [char](30),

@運送金額2_6 [money])

AS UPDATE [syuri].[dbo].[受注オーダ]

SET [伝票番号] = @伝票番号_1,

[自社S] = @自社S_2,

[メーカS] = @メーカS_3,

[運送会社2] = @運送会社2_4,

[運送伝票2] = @運送伝票2_5,

[運送金額2] = @運送金額2_6

WHERE

( [伝票番号] = @伝票番号_1)

---クエリの自動作成時、キー項目の[char](20)の 部分が作成されない場合があるので、注意

(注意) @の付くパラメータの番号は、

      対応するプロシジャーの 番号と対応していること

 

insert文の例


(ADP-専用)

ALTER PROCEDURE dbo.insert_CTL子_1

(@子ID_1 [bigint],

@親ID_2 [bigint],

@受付日_3 [datetime],

@問合せ_4 [nvarchar](1000))

AS INSERT INTO dbo.CTL子

(子ID, 親ID, 受付日,問合せ)

VALUES (@子ID_1, @親ID_2, @受付日_3, @問合せ_4)

(注意) @の付くパラメータの番号は、

      対応するプロシジャーの 番号と対応していること

 

delete文の例

(ADP-専用)

ALTER PROCEDURE [delete_仮オーダ_1]

AS DELETE [syuri].[dbo].[仮オーダ]

    do loop 内でrsを使用時はrs.open の直前にset rs をする

       rs3.Open "SELECT * from 組合登録一時 where 選択 = true", cn, , , adCmdText

       

       If Not rs3.EOF Then

      rs3.MoveFirst

   Do Until rs3.EOF

      Set rs21 = New ADODB.Recordset

  

       rs21.Open "SELECT * from 人員登録発行 where ID = " & rs3.Fields("ID") & "", cn, , , adCmdText

     

       If Not rs21.EOF Then

   

       With cmd

      .CommandText = "UPDATE 人員登録発行 SET 選択 = " & rs3.Fields("選択") & ",更新日 = #" & Date & "# WHERE CD = " & rs21.Fields("CD") & ""

      .CommandType = adCmdText

      .Execute

       End With

     rs3.MoveNext

     Else

     End If

   Loop

Else

End If

 

ADOXによるテーブル作成

Dim a

 Dim z

 Dim y

 Dim x

Dim zzz

Dim k

Dim b

Dim e

a = "A"

    y = CDate(Me.1)

    zzz = DateAdd("m", 1, y)

 Dim CAT As ADOX.Catalog

 Dim TB As ADOX.Table

   

          Set CAT = New ADOX.Catalog

          CAT.ActiveConnection = CurrentProject.Connection

   

          'テーブルを作成

          Set TB = New ADOX.Table

          TB.Name = "予定"

    Do Until y = zzz

          'フィールド定義

         b = "1"

  

       For k = 1 To 5

              x = a & b

         

              z = y & x

          TB.Columns.Append z, adVarWChar, 10

    '      TB.Columns.Append "氏前", adVarWChar, 30

       c = Val(b)

        c = c + 1

        b = Str(c)

       a = "A"

     

       Next k

      y = DateAdd("d", 1, y)

 

   Loop

         Dim cn As New ADODB.Connection

    Dim cmd As New ADODB.Command

     Dim rs As ADODB.Recordset

    Dim ss

   

     Set cn = CurrentProject.Connection

     Set rs = New ADODB.Recordset

     

     Set cmd.ActiveConnection = cn

 

      rs.CursorType = adOpenStatic

      rs.LockType = adLockOptimistic

             

      rs.Open "SELECT * from 予約日", cn, , , adCmdText

   

       If Not rs.EOF = True Then

          rs.MoveFirst

          Do Until rs.EOF

            ss = rs.Fields("名前")

              TB.Columns.Append ss, adVarWChar, 20

     

            rs.MoveNext

          Loop

       Else

       End If

         

          'データベースに登録

 

          CAT.Tables.Append TB

   

          Set CAT = Nothing

          Application.RefreshDatabaseWindow 'データベースを表示

  ADOXによるフイルード追加

      Dim cat As ADOX.Catalog

   Dim tbl As ADOX.Table

   Dim col As ADOX.Column

   Set cat = New ADOX.Catalog

   cat.ActiveConnection = CurrentProject.Connection

   Set tbl = cat.Tables(Item:="テーブル名")

   Set col = New ADOX.Column

   With col

    .ParentCatalog = cat

    .Name = "新規フィールド名"

    .Type = adInteger

    .Properties("AutoIncrement") = True

   End With

   tbl.Columns.Append Item:=col

   Set cat = Nothing

   Set tbl = Nothing

   Set col = Nothing

 
 

insert into 文の例

      With cmd

      .CommandText = "insert into 仮オーダ(注文番号,店舗コード,お客様,型番,出荷日,ネバ番号) VALUES( '" & aa & "','" & ab & "','" & ac & "','" & ad & "','" & aj & "','" & ak & "')"

      .CommandType = adCmdText

      .Execute

       End With

 

西暦、和暦変換テーブルを用いた、西暦より和暦に変換するコードの一部

 
 

rs.CursorLocation = adUseServer

rs.CursorType = adOpenStatic

rs.LockType = adLockOptimistic

 rs.Open "SELECT * from 追善一時 ", cn, , , adCmdText

If rs.EOF Then Exit Sub

rs.MoveFirst

Do Until rs.EOF

      bb = rs.Fields("仮設定日")

   

     Set rs6 = New ADODB.Recordset

        rs6.Open "SELECT * from 元号 order by 始年月日", cn, , , adCmdText

        If rs6.EOF = True Then

         End If

        rs6.MoveFirst

      Do Until rs6.EOF

           D = rs6.Fields("始年月日")

           c = rs6.Fields("元号")

           rs6.MoveNext

           If rs6.EOF Then

           y = c

           Exit Do

           End If

           dd = rs6.Fields("始年月日")

           cc = rs6.Fields("元号")

           If bb >= D And bb < dd Then

            y = c

            Exit Do

            End If

      Loop

          x = Year(bb) - Year(D) + 1

    

         If x = "1" Then x = ""

         r = y & x

         S = Format(bb, "mm")

   

         t = r & "" & S & ""

       

          A = Format(bb, "yyyy" & "/" & "mm")

  削除文の例  

  If IsNull(Me.行事ID) Then Exit Sub

    DoCmd.RunCommand acCmdSaveRecord

     Dim cn As New ADODB.Connection

     Dim cmd As New ADODB.Command

     Set cn = CurrentProject.Connection

     Set cmd.ActiveConnection = cn

     If MsgBox("削除してもよいですか", vbYesNo) = vbNo Then

   

         DoCmd.Close

     Else

    '  CN.BeginTrans

    

      With cmd

       .CommandText = "DELETE * FROM 行事M WHERE 行事ID = " & Me.行事ID & ""

       .CommandType = adCmdText

       .Execute

      End With

    ' CN.CommitTrans

      MsgBox "削除しました"

    End If

  サブフォームのデータ取得方法  
Dim aa As Currency

aa = Me.詳細入金子.Controls("小計")

   外部のテーブル(MDB)との連携で、相手にテーブル名が存在をチエックする方法(コードにフアイル名を記入できない場合)
  Dim CN As New ADODB.Connection
Set CN = CurrentProject.Connection

Dim rsx As New ADODB.Recordset
Dim rst As ADODB.Recordset
Dim con2 As New ADODB.Connection

Dim z As String
Dim FileName As String
Dim p As Long

Set con2 = New ADODB.Connection
Set rsx = New ADODB.Recordset
rsx.Open "SELECT * from 対象 ", CN, , , adCmdText

If IsNull(rsx.Fields("対象")) Then Exit Sub

z = rsx.Fields("対象")

con2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & z

On Error GoTo Err

con2.Open

Set rst = con2.OpenSchema(adSchemaTables) ' テーブル名の存在チエック

Do Until rst.EOF
If rst!TABLE_NAME = "ガソリン" Then ' テーブル名の存在チエック
Exit Do
Else
End If
rst.MoveNext

If rst.EOF Then
MsgBox "赤帽オーダー管理システムと接続設定が間違っています。"
Exit Sub
End If

Loop
MsgBox "接続しました。"

Exit Sub

Err: MsgBox "赤帽オーダー管理システムと接続設定が間違っています。"