Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


59 / 500 ページ ←次へ | 前へ→

【12132】Re:同じならば更新しない
お礼  rvr  - 12/2/3(金) 17:22 -

引用なし
パスワード
   ちんさんへ

ありがとうございます!
ちんさんのおかげで無事思い通りの取り込みができました。
助かりました。
ほんとに感謝です!
ありがとうございます!!
・ツリー全体表示

【12131】Re:同じならば更新しない
発言  ちん  - 12/2/3(金) 16:34 -

引用なし
パスワード
   ▼rvr さん:こんにちわ、ちんです。
>
>返信ありがとうございます。
>
>早速教えて頂いたロジックで実行してみました。
>
>そしたら
>i行 = TBLSET(i1).KEY_行 + 1の
>TBLSETのところで
>「subまたはFunctionが定義されていません」
> とエラーが出てしまいました。
>
>これはどこを直せばよろしいのでしょうか?
>よろしくお願い致します。

失礼しました。記述ミスです。

>i行 = TBLSET(i1).KEY_行 + 1  <− は、間違いで、
i行 = TBL_行(i1) + 1

が、正解です。

また、注意書きのところも間違いで、
>※注意として、i行 = i行 + 1 の次の行に、必ず、
>  TBLSET(i1).KEY_行 = i行 を記述してください。 <− は、間違いで、
>
TBL_行(i1) = i行
に修正ください。

以上、参考までに・・・
・ツリー全体表示

【12130】Re:同じならば更新しない
質問  rvr  - 12/2/3(金) 14:52 -

引用なし
パスワード
   ちんさん

返信ありがとうございます。

早速教えて頂いたロジックで実行してみました。

そしたら
i行 = TBLSET(i1).KEY_行 + 1の
TBLSETのところで
「subまたはFunctionが定義されていません」
とエラーが出てしまいました。

これはどこを直せばよろしいのでしょうか?
よろしくお願い致します。
・ツリー全体表示

【12129】Re:期間抽出 between
発言  ちん  - 12/2/3(金) 14:33 -

引用なし
パスワード
   ▼まよい さん:こんにちわ、ちんといいます。
>日付に関してご教示ください。
>
>下記はDateFromからDateToまでの期間のデータを抽出しようとしたものです。
>直接betweenのあとに#9/28/2011# And #11/8/2011#と数字を入れればうまくいくのですが、変数に変更すると、下記のとおり日付構文エラーや、コンパイルエラーになってしまいます。
>
>どう修正していいか分かりません。ご教示ください。
>よろしくお願いします。
>因みに、変数をDate、Variant、Stringに変えてもだめでした。
>
>
>& "WHERE (((Mdate) Between #&DateFrom&# and #&DateTo&#));" ・・・日付構文エラー
>
>& "WHERE (((Mdate) Between #"&DateFrom&"# and #"&DateTo&"#"));" ・・コンパイルエラー、構文エラー

& "WHERE Mdate Between #" & format(DateFrom,"yyyy/mm/dd") & "# and #" & format(DateTo,"yyyy/mm/dd") & "#;"

それか、
& "WHERE Mdate Between #" & format(DateFrom,"dd/mm/yyyy") & "# and #" & format(DateTo,"dd/mm/yyyy") & "#;"

で、どうでしょうか?
・ツリー全体表示

【12128】Re:同じならば更新しない
発言  ちん  - 12/2/3(金) 14:27 -

引用なし
パスワード
   ▼rvr さん、こんにちわ、ちんといいます。
配列を使用し、同じヘッダー情報だったら、前の作業指示NOを使用するで、
どうでしょうか?
サンプルとして、
>'1つ前の会社コード〜運転者名が一致していたら、作業指示Noは取得しない
>
>If (Header.会社コード <> ws.Cells(lRowH + CST_ROW_会社コード, _
>                 lColH + CST_COL_会社コード).Value) Or _
>  (Header.会社名 <> ws.Cells(lRowH + CST_ROW_会社名, _
>                lColH + CST_COL_会社名).Value) Or _
>  (Header.車番 <> ws.Cells(lRowH + CST_ROW_車番, _
>                lColH + CST_COL_車番).Value) Or _
>  (Header.運転手コード <> ws.Cells(lRowH + CST_ROW_運転手コード, _
>                 lColH + CST_COL_運転手コード).Value) Or _
>  (Header.運転手名 <> ws.Cells(lRowH + CST_ROW_運転手名, _
>               lColH + CST_COL_運転手名).Value) Then
>    
>    '作業指示No取得
>    l作業指示No = Get作業指示No
>
>    '作業指示No更新
>    Call upd作業指示No(l作業指示No)
>
>    '指示書行No更新
>    i行 = 1
>End If
↑の処理をやめて、以下の処理にしてください。

 '*** テーブル 16ページ×3シート分のテーブルを用意
 Dim dataExcel_TBL       As Integer
 Dim TBL_運送区分(1 To 48)   As Integer
 Dim TBL_会社CD(1 To 48)    As Integer
 Dim TBL_会社名(1 To 48)    As String
 Dim TBL_車番(1 To 48)     As Integer
 Dim TBL_社員(1 To 48)     As Integer
 Dim TBL_社員名(1 To 48)    As String
 Dim TBL_日付(1 To 48)     As Date
 Dim TBL_作業指示NO(1 To 48)  As Long
 Dim TBL_行(1 To 48)      As Long
 Dim i1        As Integer  '*** ヘッダーテーブル使用位置番号
 
 '*** 同じヘッダーが既に登録済みかをチェックする。
 For i1 = 1 To dataExcel_TBL
  If (TBL_会社CD(i1) = ws.Cells(lRowH + CST_ROW_会社コード, _
               lColH + CST_COL_会社コード).Value) And _
  (TBL_会社名(i1) = ws.Cells(lRowH + CST_ROW_会社名, _
                lColH + CST_COL_会社名).Value) And _
  (TBL_車番(i1) = ws.Cells(lRowH + CST_ROW_車番, _
                lColH + CST_COL_車番).Value) And _
  (TBL_社員(i1) = ws.Cells(lRowH + CST_ROW_運転手コード, _
                 lColH + CST_COL_運転手コード).Value) And _
  (TBL_社員名(i1) = ws.Cells(lRowH + CST_ROW_運転手名, _
               lColH + CST_COL_運転手名).Value) Then
  '*** 同じヘッダーを発見しました。
   Exit For
  End If
 Next i1
 If i1 > dataExcel_TBL Then
  '*** 同じヘッダーがない。新規作業指示NO 取得
  dataExcel_TBL = i1
  TBL_会社CD(i1) = ws.Cells(lRowH + CST_ROW_会社コード, _
               lColH + CST_COL_会社コード).Value
  TBL_会社名(i1) = ws.Cells(lRowH + CST_ROW_会社名, _
                lColH + CST_COL_会社名).Value
  TBL_車番(i1) = ws.Cells(lRowH + CST_ROW_車番, _
                lColH + CST_COL_車番).Value
  TBL_社員(i1) = ws.Cells(lRowH + CST_ROW_運転手コード, _
                 lColH + CST_COL_運転手コード).Value
  TBL_社員名(i1) = ws.Cells(lRowH + CST_ROW_運転手名, _
               lColH + CST_COL_運転手名).Value
  
  '作業指示No取得
  l作業指示No = Get作業指示No

  '作業指示No更新
  Call upd作業指示No(l作業指示No)
  '*** 作業指示NOをテーブルへ保存
  TBL_作業指示NO(i1) = l作業指示No

  '指示書行No更新
  i行 = 1
  '*** i行をテーブルへ保存
  TBL_行(i1) = i行
 Else
  '*** 同じヘッダーがありました。
  '*** 作業指示NOをテーブルへ保存
  l作業指示No = TBL_作業指示NO(i1)
  '指示書行No更新
  i行 = TBLSET(i1).KEY_行 + 1
 
 End If


※注意として、i行 = i行 + 1 の次の行に、必ず、
  TBLSET(i1).KEY_行 = i行 を記述してください。

以上、参考までに・・・
・ツリー全体表示

【12127】期間抽出 between
質問  まよい  - 12/2/3(金) 13:34 -

引用なし
パスワード
   日付に関してご教示ください。

下記はDateFromからDateToまでの期間のデータを抽出しようとしたものです。
直接betweenのあとに#9/28/2011# And #11/8/2011#と数字を入れればうまくいくのですが、変数に変更すると、下記のとおり日付構文エラーや、コンパイルエラーになってしまいます。

どう修正していいか分かりません。ご教示ください。
よろしくお願いします。
因みに、変数をDate、Variant、Stringに変えてもだめでした。


& "WHERE (((Mdate) Between #&DateFrom&# and #&DateTo&#));" ・・・日付構文エラー

& "WHERE (((Mdate) Between #"&DateFrom&"# and #"&DateTo&"#"));" ・・コンパイルエラー、構文エラー
・ツリー全体表示

【12126】Re:同じならば更新しない
お礼  rvr  - 12/2/3(金) 9:57 -

引用なし
パスワード
   ちん さんおはようございます。

返信ありがとうございます。

ヘッダー情報マスタの読み込み処理のロジック抜けてました。
すいません。

    If rstT.Fields("運送区分").Value = 1 Then   '自社
      rstT.Fields("運転者コード").Value = Header.運転手コード
      rstT.Fields("車両コード").Value = Header.車番
      wInt = Nz(rstT.Fields("車両コード").Value, 0)
      プレートNo = Format(wInt, "00-00")
      rstT.Fields("プレートNo").Value = プレートNo

  ElseIf rstT.Fields("運送区分").Value = 2 Then  '傭車

    If Nz(rstT.Fields("傭車先コード").Value, 0) = 0 Then
      rstT.Fields("傭車先コード").Value = Null
    End If
    
      rstT.Fields("プレートNo").Value = Header.車番
     If Nz(rstT.Fields("プレートNo").Value, 0) = "" Then
      rstT.Fields("プレートNo").Value = Null
     End If
      rstT.Fields("傭車先コード").Value = Header.会社コード
      rstT.Fields("傭車先名").Value = Header.会社名
      rstT.Fields("傭車先発地コード").Value = Meisai.発地コード
      rstT.Fields("傭車先発地名").Value = Meisai.発地名
      rstT.Fields("傭車先着地コード").Value = Meisai.行先コード
      rstT.Fields("傭車先着地名").Value = Meisai.行先名
    End If
      rstT.Fields("運賃合計").Value = 運賃合計
      rstT.Fields("非課税合計").Value = 非課税合計
      rstT.Fields("数量合計").Value = 数量合計
      rstT.Fields("得意先コード").Value = Meisai.荷主コード
      rstT.Fields("発着地コード1").Value = 発着地コード1
      rstT.Fields("発地コード").Value = Meisai.発地コード
      rstT.Fields("発地名").Value = Meisai.発地名
      rstT.Fields("発着地コード2").Value = 発着地コード2
      rstT.Fields("着地コード").Value = Meisai.行先コード
      rstT.Fields("着地名").Value = Meisai.行先名
      rstT.Fields("品目コード").Value = 品目コード
      rstT.Fields("品コード").Value = Meisai.品コード
      rstT.Fields("品名").Value = Meisai.品名
      rstT.Fields("数量").Value = Meisai.予定数
      rstT.Fields("単位").Value = Meisai.単位
      rstT.Fields("金額").Value = 金額
      rstT.Fields("概算区分").Value = 0
      rstT.Fields("備考").Value = Null
      rstT.Fields("請求更新FLG").Value = False
      rstT.Fields("月次更新FLG").Value = False
      rstT.Fields("傭車更新FLG").Value = False
      rstT.Fields("入力日").Value = Date
      rstT.Update
      i行 = i行 + 1   '指示書行=指示書行+1
End If
      
      iCntM = iCntM + 1  '明細数=明細数+1
      lRowM = lRowM + 1  '明細行=明細行+1
    Loop

以下略

これが本来の取り込みのコードです。
ご迷惑おかけして申し訳ありません。
これでもう一度ご指導よろしくお願い致します。
・ツリー全体表示

【12125】Re:同じならば更新しない
発言  ちん  - 12/2/3(金) 9:14 -

引用なし
パスワード
   ▼rvr さん、おはようございます。ちんです。
あまり、ACCESSは得意でないです。
普段は、ACCESSをDBとして使用しているだけなので。
ヘッダー情報マスタの読み込み処理がないですよね。
Excelのヘッダーを読み込み、Header.会社コード ・Header.運送コードの
登録チェックを行う。
1.ヘッダーが存在した時は、作業指示Noをマスタより取得する。
2.ヘッダーが存在したとき、T_作業指示を読み込み、MoveLastで
T_作業指示を最終データを読み込み、i行を取得する。
マスターのレイアウトとか構成がわからないので、想像で・・・


    sqlstr = "SELECT * FROM Header"
    sqlstr = sqlstr + " WHERE Header.会社コード ='" + Format(ws.Cells(lRowH + CST_ROW_会社コード, lColH + CST_COL_会社コード).Value
, "00000") + "'"
    sqlstr = sqlstr + " and Header.運送コード ='" + Format(ws.Cells(lRowH + CST_ROW_運送区分, lColH + CST_COL_運送区分).Value
, "00000") + "'"
    Set dbRes2 = dbWB.OpenRecordset(sqlstr, dbOpenDynaset)
    If dbRes2.RecordCount > 0 Then
     '**** ヘッダーマスター発見
      '*** T_作業指示を読み込む

    Else
     '**** ヘッダーマスターなし、新規登録
     
    End If


ExcelのVBAからのサンプルですが、ACCESSでも応用できると思いますが、
違ってたら、ACCESSの上級者たちが、回答してくれるかもです。
以上、
・ツリー全体表示

【12124】Re:ACCESSのVBAのIF文
発言  hatena  - 12/2/3(金) 8:58 -

引用なし
パスワード
   >>VBAではIsNull関数を使用します。
>If Forms.Aフォーム.TXT1 <> "" And Forms.A.TXT2="" Then
>となります。

テキストボックスの場合、デフォルトの設定では、未入力はNullになります。
"" と Null は異なりますので、未入力がないという判定するには、

If Not IsNull(Forms.Aフォーム.TXT1) And Not IsNull(Forms.A.TXT2) Then

ですね。設定によっては、あるいは、VBAで"" を代入など特別なことをすると""になる場合もありますので、"" も Null も判定する場合は、

If Nz(Forms.Aフォーム.TXT1,"")<>"" And Not Nz(Forms.A.TXT2,"")<>"" Then

とします。
・ツリー全体表示

【12123】Re:同じならば更新しない
回答  rvr  - 12/2/3(金) 7:52 -

引用なし
パスワード
   ちんさま
返信ありがとうございます。


>Header.会社コード やHeader.運送コード などの
>ヘッダー情報は、テーブルに登録してますか?

はいそれぞれテーブルに登録してあります。


また私自身初心者なので質問の仕方がうまくありません。
何か少しでも足りない部分がありましたら、なんでも言って頂きたいです。
よろしくお願い致します。
・ツリー全体表示

【12122】Re:同じならば更新しない
質問  ちん  - 12/2/2(木) 11:09 -

引用なし
パスワード
   ▼rvr さん:こんにちわ、ちんといいます。
質問ですが、
Header.会社コード やHeader.運送コード などの
ヘッダー情報は、テーブルに登録してますか?
同一のヘッダーの時、作業指示NOは、同じものを使用すると、ありますが?
・ツリー全体表示

【12121】Re:ACCESSのVBAのIF文
発言  ちん  - 12/2/2(木) 9:45 -

引用なし
パスワード
   danさん、hatena さん。おはようございます。ちんといいます。
hatenaさんの言う通り、
>Is Null が使えるのは、クエリ内の式と、Accessのオブジェクト上の式(コントロールソースなど)だけです。VBAでは使えません。
>
>VBAではIsNull関数を使用します。
If Forms.Aフォーム.TXT1 <> "" And Forms.A.TXT2="" Then
となります。

以上、参考までに・・・
・ツリー全体表示

【12120】インポートについて
質問  みき  - 12/2/1(水) 23:18 -

引用なし
パスワード
   Accessでインポートの上書きを行いたく思っているのですが、
うまく行きません。
どなたかご教示頂けますでしょうか。
困っているのは下記の2点になります。

1つ目
フォーム1に「日報のインポート」と言うコマンドボタンを作成し、
該当ファイルを選択し日報データをインポート。


2つ目
日報データの上書きが出来ません。
普通にインポートしたら同一IDが重複してレコードがあり、どちらが最新なのか分かりません。。。。
日報データ、T_取込用日報データの2つのテーブルを作成し、
更新クエリで更新出来るようにしたのですが、
うまく更新がかかりません。。。
何かよい方法はありますでしょうか。

イメージとしまして、1つ目のインポートを行うと、2つ目の上書き(更新)が自動的にできるような
仕組みにしたいと考えております。

分かりづらく申し訳ございませんが、良い方法をご教示頂きたく思います。
何卒よろしくお願いいたします。
・ツリー全体表示

【12119】Re:ACCESSのVBAのIF文
回答  hatena  - 12/1/31(火) 14:24 -

引用なし
パスワード
   >If Forms.Aフォーム.TXT1 <> "" And Forms.A.TXT2 is null Then
>
>とすると、is null がひっかかりエラーとなります。

Is Null が使えるのは、クエリ内の式と、Accessのオブジェクト上の式(コントロールソースなど)だけです。VBAでは使えません。

VBAではIsNull関数を使用します。
・ツリー全体表示

【12118】ACCESSのVBAのIF文
質問  dan  - 12/1/31(火) 13:44 -

引用なし
パスワード
   ACCESSのVBAのIF文で、

If Forms.Aフォーム.TXT1 <> "" And Forms.A.TXT2 is null Then

とすると、is null がひっかかりエラーとなります。

TXT2に値が入力されていなければという条件をつけたいのですが、
どこが間違えてるか教えてください。
・ツリー全体表示

【12117】同じならば更新しない
質問  rvr  - 12/1/31(火) 9:43 -

引用なし
パスワード
   お世話になります。

アクセスからエクセルをアクセステーブルに取り込む処理を行っております。

エクセルのレイアウトは

運送区分 会社コード  会社名  車番 社員コード 社員名 日付   ←ヘッダー
 1   0   ○○会社  33   5    △△  1/31   ←ヘッダー項目
荷主  発地   行先   品名  単位  予定数   ←明細  
■   ☆    ◎    ▼   キロ    30    ←明細項目
◆   ●    ○    ▲   キロ    30
以下続く。。。

このようなエクセルファイルで1シートに最大16ページ分あります。

そして同じような項目でシートが3つあります。
この3つのシートをアクセスのフォーム状にてボタンを押してテーブルに取り込む作業をしています。(3つとも一括で一回のボタン処理で取り込んでいます)
取り込むと1ページにつき1つ作業指示Noがつくようになっております。

これを例えばシート1の1ページ目のヘッダー部分とシート2の2ページ目のヘッダー部分が同じならば作業指示Noはシート1の1ページ目の作業指示Noにしたいのです。

取込み処理もロジックは(だいぶ長いですがすいません)

'**************************************************
'* データ取込処理
'**************************************************
Private Function ImportData() As Boolean

  Dim wb As Workbook 'Microsoft Excelブック。
  Dim ws As Worksheet '対象セル範囲を含むワークシートを返します。
  Dim vSheet As Variant
  Dim sht As Variant
  Dim dbs As Database
  Dim rstT As Recordset 
  Dim lRowH As Long, lColH As Long    'ヘッダー行、列
  Dim lRowM As Long, lColM As Long    '明細行、列
  Dim iCntH As Integer, iCntM As Integer 'ヘッダー数、明細数
  Dim Header As typHaeder         'ヘッダー項目
  Dim Meisai As typMeisai         '明細項目
  Dim l作業指示No As Long         '4/2追加
  Dim i行 As Long             '指示書行No
  Dim 運送区分 As Integer
  Dim 傭車先コード As Long
  Dim 傭車先名 As String
  Dim プレートNo As Variant
  Dim 傭車先発地コード As Long
  Dim 傭車先発地名 As String
  Dim 傭車先着地コード As Long
  Dim 傭車先着地名 As String
  Dim 傭車合計 As Currency
  Dim 傭車非課税合計 As Currency
  Dim 運賃合計 As Currency
  Dim 非課税合計 As Currency
  Dim 数量合計 As Integer
  Dim 得意先コード As Long
  Dim 発着地コード1 As Integer
  Dim 発地コード As Long
  Dim 発地名 As String
  Dim 発着地コード2 As Integer
  Dim 着地コード As Long
  Dim 着地名 As String
  Dim 品目コード As Long
  Dim 品コード As Long
  Dim 品名 As String
  Dim 数量 As Integer
  Dim 単位コード As Long
  Dim 単位 As String
  Dim rstM As New ADODB.Recordset    
  Dim rst As New ADODB.Recordset    
  Dim wInt As Integer           '車両コード
  Dim 端数 As Integer
  Dim 実数 As Integer
  Dim 単価 As Currency
  Dim 金額 As Currency
  Dim xlApp As Excel.Application
  Set xlApp = New Excel.Application
  Dim cl As Range
  ImportData = False

  'ファイルオープン
  Set wb = xlApp.Workbooks.Open(ファイル名.Value)

  'データベース接続
  Set dbs = CurrentDb 
 Set rstT = dbs.OpenRecordset("T_作業指示", dbOpenDynaset)

  'シート名をセット
  vSheet = Array("シート1", "シート2", "シート3")
  
  'シート名分ループ
  For Each sht In vSheet
  
  '此処でシートセット
  Set ws = wb.Worksheets(sht)
  
  '変数初期化
  lRowH = 2: lColH = 1  'ヘッダー行、列
  lRowM = 4: lColM = 1  '明細行、列
  iCntH = 0: iCntM = 0  'ヘッダー数、明細数
  i行 = 1
  
  'ヘッダー読込
   Do Until iCntH >= CST_MAX_H_CNT  
  
'1つ前の会社コード〜運転者名が一致していたら、作業指示Noは取得しない

If (Header.会社コード <> ws.Cells(lRowH + CST_ROW_会社コード, _
                 lColH + CST_COL_会社コード).Value) Or _
  (Header.会社名 <> ws.Cells(lRowH + CST_ROW_会社名, _
                lColH + CST_COL_会社名).Value) Or _
  (Header.車番 <> ws.Cells(lRowH + CST_ROW_車番, _
                lColH + CST_COL_車番).Value) Or _
  (Header.運転手コード <> ws.Cells(lRowH + CST_ROW_運転手コード, _
                 lColH + CST_COL_運転手コード).Value) Or _
  (Header.運転手名 <> ws.Cells(lRowH + CST_ROW_運転手名, _
               lColH + CST_COL_運転手名).Value) Then
    
    '作業指示No取得
    l作業指示No = Get作業指示No

    '作業指示No更新
    Call upd作業指示No(l作業指示No)

    '指示書行No更新
    i行 = 1
End If

    'ヘッダー項目取得
    Header.運送区分 = ws.Cells(lRowH + CST_ROW_運送区分, lColH + CST_COL_運送区分).Value
    Header.会社コード = ws.Cells(lRowH + CST_ROW_会社コード, lColH + CST_COL_会社コード).Value
    Header.会社名 = ws.Cells(lRowH + CST_ROW_会社名, lColH + CST_COL_会社名).Value
    Header.車番 = ws.Cells(lRowH + CST_ROW_車番, lColH + CST_COL_車番).Value
    Header.運転手コード = ws.Cells(lRowH + CST_ROW_運転手コード, lColH + CST_COL_運転手コード).Value
    If Nz(rstT.Fields("運転者コード").Value, 0) = "" Then
      rstT.Fields("運転者コード").Value = Null
    End If
    Header.運転手名 = ws.Cells(lRowH + CST_ROW_運転手名, lColH + CST_COL_運転手名).Value
    Header.日付 = ws.Cells(lRowH + CST_ROW_日付, lColH + CST_COL_日付).Value
    
    '運送区分が入力されていなかったら、処理終了
    If Trim(Header.運送区分) = "" Then
    Exit Do
    End If

    '明細読込
    iCntM = 0  '明細数=0
    
  Do Until iCntM >= CST_MAX_M_CNT 'CST_MAX_M_CNT=31 or 61 明細最大数31以上or61未満になるまで処理

    '明細項目取得
    Meisai.荷主名 = ws.Cells(lRowM + CST_ROW_荷主名, lColM + CST_COL_荷主名).Value
    Meisai.発地名 = ws.Cells(lRowM + CST_ROW_発地名, lColM + CST_COL_発地名).Value
    Meisai.行先名 = ws.Cells(lRowM + CST_ROW_行先名, lColM + CST_COL_行先名).Value
    Meisai.品名 = ws.Cells(lRowM + CST_ROW_品名, lColM + CST_COL_品名).Value
    Meisai.単位 = ws.Cells(lRowM + CST_ROW_単位, lColM + CST_COL_単位).Value
    Meisai.予定数 = ws.Cells(lRowM + CST_ROW_予定数, lColM + CST_COL_予定数).Value
    Meisai.端数 = ws.Cells(lRowM + CST_ROW_端数, lColM + CST_COL_端数).Value
    Meisai.実数 = ws.Cells(lRowM + CST_ROW_実数, lColM + CST_COL_実数).Value
    Meisai.単価 = ws.Cells(lRowM + CST_ROW_単価, lColM + CST_COL_単価).Value
    Meisai.金額 = ws.Cells(lRowM + CST_ROW_金額, lColM + CST_COL_金額).Value

      rstT.AddNew

      rstT.Fields("作業指示No").Value = l作業指示No  'ヘッダー、明細にない部分を使用
      rstT.Fields("指示書行No").Value = i行
      rstT.Fields("伝票日付").Value = Header.日付
      rstT.Fields("運送区分").Value = Header.運送区分
      rstT.Fields("運賃合計").Value = 運賃合計
      rstT.Fields("非課税合計").Value = 非課税合計
      rstT.Fields("数量合計").Value = 数量合計
      rstT.Fields("得意先コード").Value = Meisai.荷主コード
      rstT.Fields("発着地コード1").Value = 発着地コード1
      rstT.Fields("発地コード").Value = Meisai.発地コード
      rstT.Fields("発地名").Value = Meisai.発地名
      rstT.Fields("発着地コード2").Value = 発着地コード2
      rstT.Fields("着地コード").Value = Meisai.行先コード
      rstT.Fields("着地名").Value = Meisai.行先名
      rstT.Fields("品目コード").Value = 品目コード
      rstT.Fields("品コード").Value = Meisai.品コード
      rstT.Fields("品名").Value = Meisai.品名
      rstT.Fields("数量").Value = Meisai.予定数
      rstT.Fields("単位").Value = Meisai.単位
      rstT.Fields("金額").Value = 金額
      rstT.Fields("概算区分").Value = 0
      rstT.Fields("備考").Value = Null
      rstT.Fields("請求更新FLG").Value = False
      rstT.Fields("月次更新FLG").Value = False
      rstT.Fields("傭車更新FLG").Value = False
      rstT.Fields("入力日").Value = Date
      rstT.Update
      i行 = i行 + 1   '指示書行=指示書行+1
End If
      
      iCntM = iCntM + 1  '明細数=明細数+1
      lRowM = lRowM + 1  '明細行=明細行+1
    Loop
    
    iCntH = iCntH + 1    'ヘッダー数=ヘッダー数+1
    
    '次の段へ
    If iCntH Mod 2 = 1 Then 
      lRowH = lRowH + 35 'ヘッダー行=ヘッダー行+35
      lRowM = lRowM + 4
    Else
      lColH = lColH + 15  'ヘッダー列=ヘッダー行+6
      lColM = lColM + 15  '明細数=明細列+1
      lRowM = 4      '明細行=2
      lRowH = 2      'ヘッダー行=2
      iCntM = 0      '明細数=0
    End If
  Loop
  Next
 
説明がへたくそで申し訳ありませんが、よろしくお願い致します。
・ツリー全体表示

【12116】Re:データ統合につきまして
お礼  ムーン E-MAIL  - 12/1/20(金) 11:49 -

引用なし
パスワード
   ▼hatena さん:
ためしてみます!取り急ぎありがとうございます。
・ツリー全体表示

【12115】Re:データ統合につきまして
回答  hatena  - 12/1/20(金) 9:25 -

引用なし
パスワード
   DAOを使用した場合のコード例

Dim rs As DAO.Recordset
Dim kID As Long, renban As long

Set rs = CurrentDB.OpenRecordset( _
  "SELECT 連番, 顧客ID FROM テーブルA ORDER BY 氏名, 出荷日;")

Do until rs.EOF
  If kID = rs!顧客ID Then
    renban = renban + 1
  Else
    kID = rs!顧客ID
    renban = 1
  End If
  rs.Edit
  rs!連番 = renban
  rs.Update
  rs.MoveNext
Loop

rs.Close: Set rs = Nothing
・ツリー全体表示

【12114】データ統合につきまして
質問  ムーン E-MAIL  - 12/1/18(水) 16:00 -

引用なし
パスワード
   皆様のお力をお貸し下さい。

テーブルA

連番   顧客ID 氏名・・
ブランク 1    田中
     2    西田
     3    高橋
     1    田中
     4    太田
     2    西田
フィールド連番はブランクになっています。

アクションの結果(ほしいもの)
↓↓
連番   顧客ID 氏名  出荷日
1     1    田中  2011/12/1
2     1    田中  2012/1/8      
1     2    西田  2011/12/24
2     2    西田  2012/1/6 
1     3    高橋  2011/12/4  
1     4    太田  2011/12/10

1.顧客IDを第一昇順ソート、出荷日を第ニ昇順ソート
2.フィールド「連番」に同一顧客にはソート順に1,2,・・
  単独顧客には1にみ

という風に連番を振りたいのです。

よろしくお願いいたします。
・ツリー全体表示

【12113】Re:DTpickerについて
お礼  へたれ  - 12/1/8(日) 9:41 -

引用なし
パスワード
   ▼hatena さん:
>>タブコントロール1ページ目にDTpickerを張り付けて
>>Me.DTpicker1.Day=Day(Date-1)
>>とすると、前日を指定できるのですが、
>>タブの2ページ目に張り付け、同じようにしても
>>エラーとなります
>>なにか、2ページ目を指定する必要が
>>あるのでしょうか?
>
>DTpicker をタブコントロール上に配置しするとそのような不具合があるみたいです。
>
>私の場合も同じ症状に遭遇したことがあります。
>
>そのとき、タブコントロール上に配置するのはあきらめて、詳細セクション上に配置したあと、
>タブコントロール上に移動させて(タブコントロールの上にあるように見える)、
>タブコントロールの変更時イベントで、表示/表示を切り替える、
>というような対応をとりました。

ありがとうございます!
なるほど、そうすればタブ上にあるように見えますね
さっそくやってみます
・ツリー全体表示

59 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1078321
(SS)C-BOARD v3.8 is Free