- 帖子
- 354
- 主題
- 5
- 精華
- 0
- 積分
- 387
- 點名
- 0
- 作業系統
- windows7
- 軟體版本
- vba,vb,excel2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2017-1-8
- 最後登錄
- 2024-8-2
 
|
3#
發表於 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 |
|