2010-03-30 187 views
1

我想結合多個審計表,然後將結果篩選到Excel表中。 Union All和參數使查詢超過1200個字符。看起來這個字符串在運行時會被截斷。任何人都能提出什麼建議。我無法控制數據庫結構,只能讀取foxpro空閒表。在vba中查詢字符串長度限制?

我允許創建表,但可以寫入Excel工作表連接到數據源

這個更新是我能夠延長查詢字符串超過1800個字符和找回數據。所以我得出結論我有語法錯誤,我提到的明顯的截斷是在我的腳本編寫的字符串開發失敗。

我貼我的連接代碼的例子,這個問題的答案已經消失了,所以我不知道如何指定這個封閉的問題。沒有明顯的字符串長度限制,這是我最初關心的問題。感謝您的貢獻。

+1

很難沒有規範示例的幫助或查詢字符串如何發送或如何生成的細節。是否有一些代碼和電子表格圖片可以發佈? – gvkv 2010-03-30 14:44:50

+0

你的桌子在哪裏?你如何連接到他們?對於字符串變量,vba沒有這種長度限制,但這可能與您與數據庫進行通信的方式有關。 – 2010-03-31 17:23:05

+0

你應該更新你的問題(和你一樣)。如果沒有匹配的答案,並且你解決了這個問題,你也可以創建你自己的答案並將其標記爲可接受的答案。 – 2010-04-04 17:42:05

回答

0

你能不能創建具有所需數據的超集的記錄,然後運行鍼對第二查詢做最後的篩選?

另外,我不以任何方式熟悉的FoxPro或數據庫的權限,可以在數據庫中創建一個存儲過程,然後就向它傳遞參數?

修改添加:我認爲你已經給你的表簡稱? (例如...FROM Extremely_Long_Table_Name a WHERE...)如果沒有,這可能可以爲您節省一堆字符。

+0

我需要篩選這些審計表,並選擇做聯盟所有僅*因爲這個字符串長度問題,但我結合了大約10個表,並沒有控制如何建立這個數據庫 – datatoo 2010-03-30 14:34:35

0

如果它是一個聯合查詢,爲你的問題建議,那麼你可以把它分解成每個子查詢和運行它們一個接一個。

我幾乎不相信你的查詢字符串的限制會很小。您的查詢在哪裏被截斷?通過VBA?通過FoxPro?你能否將生成的查詢直接複製/粘貼到數據庫客戶端並查看它是否正確運行?

0

重寫查詢多種方式之後,我已經得到了成功超越1800個字符的查詢字符串的長度。我必須得出結論,我以前的錯誤是語法,儘管vba錯誤沒有提供很多線索。

查詢字符串是使用在Excel表單控件構建和SQLstr積累。明顯的截斷是我的腳本創建字符串中的錯誤。因爲這表明它似乎不太可能是一個字符串長度的限制答覆讓我看看語法而不是

With ActiveSheet.QueryTables.Add(Connection:=Array(_ 
    "ODBC;DSN=myDB;Description=myDB;DATABASE=myDB;Trusted_Connection=YES"), Destination:=Range("A2")) 
    .CommandText = SQLstr 
    .Name = "Query from myDB" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = False 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlOverwriteCells 
    .SavePassword = True 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .PreserveColumnInfo = True 
    .Refresh BackgroundQuery:=False 
End With 

感謝您的幫助:一旦得到解決,然後這一點。 如果有人知道,如果有查詢字符串大小限制,我仍然好奇。

0

檢查合成語法錯誤,我得到了類似的錯誤,但它發生了語法錯誤,在我連接我的(2000+字符長)查詢字符串時出現了一些空格錯誤。確保每個串聯字符串之前/之後都有空格,例如

qryStr = "SELECT name, tel, email" & _ 
" FROM MyTable;" 

請注意FROM子句前面的空格(雙引號內)。 HTH。埃迪