標題:
[發問]
VBA求救高手,將資料分割到指定TEXTBOX
[打印本頁]
作者:
wsx1130
時間:
2023-6-10 02:09
標題:
VBA求救高手,將資料分割到指定TEXTBOX
我是用VBA,想要新增一些資料,從SQL SERVER中讀取"備註"的資料,備註的資料範例如下
"7/3 USA
PO#22001999 - 海運
MFG Date:2023-03-15
Lancet:2201229001 2027-03-13
Code NO : F674
Control L1:XC230301L 2025-03-06*1507(QC*0)
Control L2:XC230302M 2025-03-05*1507(QC*0)
Control L3:XC230303H 2025-03-04*1507(QC*0)
Control L4:XC230323L 2025-03-22*1507(QC*0)
Control L5:XC2303012M 2025-03-23*1507(QC*0)
Control L6:XC23033232 2025-03-19*1507(QC*0)
MFG L1:2022-03-06
MFG L2:2022-03-07
MFG L3:2022-03-08
Strips:THS2303002 2025-03-14
L1:46 - 76 mg/dL、34 - 78 mmol/L,Mean: 61 mg/dL、62 mmol/L
L2:90 - 134 mg/dL、56 -90 mmol/L,Mean: 112 mg/dL、63 mmol/L
L3:173 - 259 mg/dL、66 -778 mmol/L,Mean: 216 mg/dL、64 mmol/L"
我想要將以上"備註"的資料分別都存入TEXTBOX中
預期的結果如下
TEXTBOX27=22001999
TEXTBOX23=2023-03-15
TEXTBOX24=2201229001
TEXTBOX25=2027-03-13
TEXTBOX26=F674
TEXTBOX4=XC230301L
TEXTBOX15=XC230302M
TEXTBOX16=XC230303H
TEXTBOX6=2025-03-06
TEXTBOX19=2025-03-05
TEXTBOX20=2025-03-04
TEXTBOX13=2022-03-06
TEXTBOX17=2022-03-07
TEXTBOX18=2022-03-08
TEXTBOX21=THS2303002
TEXTBOX22=2025-03-14
TEXTBOX28=46
TEXTBOX29=76
TEXTBOX30=34
TEXTBOX31=78
TEXTBOX32=61
TEXTBOX33=62
TEXTBOX34=90
TEXTBOX35=134
TEXTBOX36=56
TEXTBOX37=90
TEXTBOX38=112
TEXTBOX39=63
TEXTBOX40=173
TEXTBOX41=259
TEXTBOX42=66
TEXTBOX43=778
TEXTBOX44=216
TEXTBOX45=64
我的CODE如下,
Private Sub CommandButton1_Click()
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionString = Target
cn.Open
Dim strSQL As String
strSQL = "SELECT DISTINCT 料號, 工令數量, 機器序號開始,備註 FROM WORK43600 WHERE 工令='" & TextBox1.Value & "'"
Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
rs.Open strSQL, cn
If Not rs.EOF Then
TextBox2.Value = rs("料號").Value
TextBox3.Value = rs("工令數量").Value
TextBox5.Value = rs("機器序號開始").Value
Dim remark As String
remark = rs("備註").Value
Else
MsgBox "找不到相應的工單!", vbExclamation, "錯誤"
End If
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
作者:
v855617
時間:
2023-6-12 16:17
我是用VBA,想要新增一些資料,從SQL SERVER中讀取"備註"的資料,備註的資料範例如下
"7/3 USA
PO#2200 ...
wsx1130 發表於 2023-6-10 02:09
請問您
textbox??與值的關係是怎麼樣定義的?
例如
TEXTBOX27=22001999 是第二筆備註 PO#22001999 - 海運
但是第三筆備註 MFG Date:2023-03-15 填入的欄位卻是 TEXTBOX23=2023-03-15
這樣看不太出來規則是什麼,對於程式設計而言比較無法做到,或是需要對照表來處理。
再來截取到TextBox中的資料似乎也不是全部資料而是部份資料,
例如:
TEXTBOX4=XC230301L 取的是第六個備註Control L1:XC230301L 2025-03-06*1507(QC*0) 中的部份文字
但是第二個備註 PO#22001999 - 海運 取部份值存到 TEXTBOX27=22001999
這裡也是看不太出來它的規則是什麼,這樣會更難用程式處理。
有規則性的話在程式部份就可以進行處理。
以上
作者:
singo1232001
時間:
2023-7-20 22:15
本帖最後由 singo1232001 於 2023-7-20 22:26 編輯
回復
1#
wsx1130
Private Sub CommandButton1_Click()
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionString = Target
cn.Open
Dim strSQL As String
'strSQL = "SELECT DISTINCT 料號, 工令數量, 機器序號開始,備註 FROM WORK43600 WHERE 工令='" & TextBox1.Value & "'"
strSQL = "SELECT DISTINCT * FROM WORK43600 WHERE 工令='" & TextBox1.Value & "'"
由你的需求看來 感覺資料欄位非常多 就這樣做之後在調整就好 多抓一點沒差 速度很快
若未來真的只有用這四欄資料 料號, 工令數量, 機器序號開始,備註 若真就只有這四個 就用你原本就好
Set rs = cn.execute(strSQL)
ar = rs.getrows
if isarray(ar) then
'然後你在從ar陣列裡面一筆一筆對應放到textbox就好
'不要用rs的方式直接一筆一筆放到 textbox 會出現莫名其妙的錯誤 尤其是二次呼叫
'因為rs的資料是用"物件指針"的所以你會看到 EOF 只能乖乖從頭到尾的順序 一次沒做好又要重來 對於不是完美格式資料 很容易誤判
'資料經過一次就會失去指針 這對於編寫關於SQL呼叫時的人 非常痛苦 所以先建議存到陣列 後續再處理
Else
MsgBox "找不到相應的工單!", vbExclamation, "錯誤"
End If
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)