Board logo

標題: [發問] VBA SQL語法相關詢問 [打印本頁]

作者: 蒼雪    時間: 2024-2-14 22:05     標題: VBA SQL語法相關詢問

想請教各位大神...
先前在撈大量資料的情況下,使用for迴圈,較無使用SQL迅速。

目前在selsect資料過程中,會卡在無法將空白資料也一併提出。
會跳出錯誤視窗:無值提供給一或多個必要參數。
有辦法可以使用SQL與法辦到嗎?

[attach]37411[/attach]
[attach]37412[/attach]
作者: singo1232001    時間: 2024-2-15 11:32

本帖最後由 singo1232001 於 2024-2-15 11:35 編輯

回復 1# 蒼雪


若欄位名稱空白
A欄 就是F1
B欄就是 F2     

F的意思就是Fileds

假設工作表1 A,B,C,D 四欄位
代號,(空白),商品,金-額

例如 select *  form [工作表1$A1:D]

可改成 select 代號,F2,商品,[金-額]    from  [工作表1$A1:D]
作者: singo1232001    時間: 2024-2-15 11:52

回復 2# singo1232001


    呈上題
若 商品 有空值 想改為0
可改成 select 代號,F2,iif(IsNull(商品),0,商品) as 商品 ,[金-額]    from  [工作表1$A1:D]


另外 原始資料表 與 存放資料的範圍不能相同
作者: 蒼雪    時間: 2024-2-15 22:27

本帖最後由 蒼雪 於 2024-2-15 22:39 編輯

回復 3# singo1232001


    所要抓的資料有標題欄,標題欄下有空值。
    而我的判斷式是在表格後方有"V"的會將該列的資料(包含空值)一併轉至另外一個Sheet。
    在嘗試使用iif(IsNull(標題欄名稱),0,標題欄名稱) as 標題欄名稱,遇到以下情況:
    [attach]37415[/attach]

    20:38↑剛剛有發現問題點,標題名稱有換行動作,清除換行之後,使用該語法還是回到#1的情況

    這是寫在VBA內的資料
  1. sql = "select 員工編號,姓名,出勤日期,星期,班別代號,班別名稱,應上班時間,應下班時間,上班時間,下班時間,假別代號,假別名稱,請起時間,請訖時間,休假原因,請假時數,申請加班別,加起時間,加訖時間,加班原因,加班時數 from [出勤簽到$] where 篩選條件='V'"
複製代碼

作者: singo1232001    時間: 2024-2-16 00:16

回復 4# 蒼雪


    [attach]37417[/attach]
作者: 蒼雪    時間: 2024-2-16 08:20

回復 5# singo1232001


    感謝singo1232001的解答,已順利將問題排除。
    由於,是接手他人Excel格式將巨集衍生出來。
    後續從中發現,有許多標題欄皆有分行,導致SQL語法判定上異常,將其修正後已可正常運作。
作者: singo1232001    時間: 2024-2-19 11:51

本帖最後由 singo1232001 於 2024-2-19 12:01 編輯

回復 4# 蒼雪


    剛看到圖片
若要直接查詢日期  格式較為複雜

不管是要select查
select format(日期欄位,'yyyy-MM-dd')

或者 where篩
where between format(日期欄位,'yyyy-MM-dd') and  format(日期欄位,'yyyy-MM-dd')&'23:59:59'

都要用"文字日期" 方式來處理
而且要注意大小寫


你也可以參考
https://forum.twbts.com/viewthread.php?tid=23976&extra=pageD2&page=4
32樓
作者: 蒼雪    時間: 2024-2-21 16:39

回復 7# singo1232001


    感謝指導,我會再多努力學習語法!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)