iT邦幫忙

0

[VBA] 資料庫抓下來的結果異常

  • 分享至 

  • xImage

以同樣的條件做測試
為什麼第二筆,後面欄位的資訊都跑不完整,都是空白呈現???
https://ithelp.ithome.com.tw/upload/images/20240117/20154489EyQBwnhrcl.png

Sub sql_kintone_NS()
    Dim conn As Object
    Dim Dbtype As String
    Dim ws As Worksheet
    Dim PRD_NAME As Range
    Dim i As Integer
    
    Dbtype = "Access"
'資料庫連線設定
    Set conn = connectSQL(Dbtype)

'檢查連線是否成功
    If conn.State = 1 Then
        Debug.Print "Connected to database"
        
        ' 創建記錄集對象
        Dim rs As Object
        Set rs = CreateObject("ADODB.Recordset")
        
        ' 將查詢結果存入到Excel工作表中(假設結果存入 )
        Set ws = ThisWorkbook.Sheets("製品建檔登入申請")         'ws把SQL資料抓下來存放的sheet
        Debug.Print "開始:" & Now
'------------查詢數個 FOR EACH------------------
        
        For i = 6 To 工作表2.Range("C11").End(xlUp).Row
            Debug.Print 工作表2.Range("C11").End(xlUp).Row
            
            Set PRD_NAME = ws.Cells(i, 3) ' C列第i行
            Debug.Print PRD_NAME

                            ' 定義SQL查詢 Q_CreateInfo_master_kintone  : kintone kintone kintone 建檔資訊
                            Dim strSQL As String
                            strSQL = "SELECT Q_CreateInfo_master_kinton_NS.*  FROM Q_CreateInfo_master_kinton_NS WHERE (((Q_CreateInfo_master_kinton_NS.產品名稱)='" & PRD_NAME & "'));"
                            Debug.Print strSQL
                                    
                            ' 執行查詢
                            rs.Open strSQL, conn
                            
                            '(表頭) 欄位名稱 第一行
                            'For Column = 1 To rs.Fields.Count  'rs.Fields.Count
                            '    ws.Cells(25, Column).Value = rs.Fields(Column - 1).Name
                            'Next Column
                            
                            ' (表身) 查詢結果(欄位值) 入工作表
                            For j = 1 To rs.Fields.Count
                                    recordValues = rs.Fields(j - 1).Name & "=" & rs.Fields(j - 1).Value & ", "
                                    Debug.Print j, rs.Fields.Count, rs.Fields(j - 1).Value
                            Next j
                            
                            If Not rs.EOF Then
                                ws.Cells(i + 20, 1).CopyFromRecordset rs
                             End If
                            ' 關閉資料集
                            rs.Close
            Next i
        
        Debug.Print "結束:" & Now
    Else
        Debug.Print "Failed to connect to database"
    End If
    
    conn.Close
    Set conn = Nothing

End Sub
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
davidliu9116
iT邦研究生 2 級 ‧ 2024-02-20 11:13:30

請問 查詢1 跟 查詢2 的料號是否相同?
如果不同請檢查欄位的是 空值 還是 空白
看起來 查詢2 的欄位值是 空白

查詢的條件是一樣的料號產品名稱,
可是抓下來的資料 第二筆的資料從第10欄後抓不到,
雖然第一筆第10欄顯示NULL,
至少13、14、15、17欄位都是有值,卻也是顯示空白

davidliu9116 iT邦研究生 2 級 ‧ 2024-08-14 13:07:43 檢舉

我們換個方式
將空值轉為空白試試
SELECT nz([欄位1],"") as 欄位1, nz([欄位2],"") as 欄位2,nz([欄位3],"") as 欄位3 FROM Q_CreateInfo_master_kinton_NS WHERE (((Q_CreateInfo_master_kinton_NS.產品名稱)='" & PRD_NAME & "'));

我要發表回答

立即登入回答