Board logo

標題: [發問] 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/)