|
度々お助けいただきましてありがとうございます。
またまたお知恵を拝借させていただきたいのですが、
表にデータを入力してボタンをおすとデータベースに登録する。というものを作っていまして、その表にはデータ入力できる欄が15行くらいありまして、
一行目から順番に一行もとばさずいれた時はいいのですが
一行とばすとスペースの前までのデータだけ登録でき、
スペース後のデータが登録されません。
スペースがあってもデータを取得できる方法か、スペースがあいて入力が
あった時はエラーになって順番に入力しないといけないようなものにしたいのですが・・・・
よろしくお願いいたします。
ちなみに下記プログラムのどこにどう書いたらいいのか教えてください。
Sub btn登録_Click()
Dim oraDS As OracleInProcServer.OraDynaset 'OraDynasetオブジェクト
Dim selCmd As String '選択用のSQL文
Dim delCmd As String '削除用のSQL文
Dim n As Integer '注文明細の個数
Dim i As Integer 'カウンタ
'データベースの接続を確認する
If oraDB Is Nothing Then
MsgBox "データベースに接続していないため、データを登録できません", vbOKOnly, "注文書作成"
Exit Sub
End If
'入力したデータ数(c13:C27)を調べる
n = Application.WorksheetFunction.CountA(Range("C13:C27"))
If n = 0 Then
MsgBox "明細を入力していないため登録できません", vbOKOnly, "注文書作成"
Exit Sub
End If
'トランザクション開始
oraSS.BeginTrans
'既存の注文書のとき
If Range("I1").Value = "既存" Then
'[T_SUB]テーブルから削除
delCmd = "DELETE FROM T_SUB " & "WHERE ORDER_NO = '" & Range("D8") & "'"
oraDB.ExecuteSQL delCmd
'[T_MAIN]テーブルから削除
delCmd = "DELETE FROM T_MAIN " & "WHERE ORDER_NO = '" & Range("D8") & "'"
oraDB.ExecuteSQL delCmd
End If
'[T_MAIN]テーブルにレコードを追加
selCmd = "SELECT * FROM T_MAIN"
Set oraDS = oraDB.CreateDynaset(selCmd, ORADYN_DEFAULT)
oraDS.AddNew
oraDS.Fields("ORDER_NO").Value = Range("D8").Value '注文番号
oraDS.Fields("ORDER_DAY").Value = Range("F8").Value '注文日
oraDS.Fields("SNO").Value = Range("A1").Value '連番
oraDS.Fields("KO_NO").Value = Range("D9").Value '顧客番号
oraDS.Fields("TAN_NAME").Value = Range("I4").Value '担当者
oraDS.Fields("TAX").Value = Range("I5").Value '消費税率
oraDS.Fields("PAYMENT").Value = Range("I8").Value '支払い方法
oraDS.Fields("DELIVER").Value = Range("I9").Value 'お届け方法
oraDS.Fields("BIKO").Value = Range("B33").Value '備考
oraDS.Update
Set oraDS = Nothing
'[T_SUB]テーブルにレコードを追加
selCmd = "SELECT * FROM T_SUB"
Set oraDS = oraDB.CreateDynaset(selCmd, ORADYN_DEFAULT)
For i = 0 To n - 1
oraDS.AddNew
oraDS.Fields("ORDER_NO").Value = Range("D8").Value '注文番号
oraDS.Fields("SHO_NO").Value = Range("C" & 13 + i).Value '品番
oraDS.Fields("NUM").Value = Range("H" & 13 + i).Value '数量
oraDS.Update
Next i
Set oraDS = Nothing
'コミット
oraSS.CommitTrans
'後処理
MsgBox "登録しました", vbOKOnly, "注文書作成"
|
|