2017-06-17 38 views
-1

在Access 2007年,我需要選擇所有表中的短文本字段。選擇在Microsoft SQL查詢只特定的數據類型

VBA代碼看起來應該是這樣:

Dim strClient As String 
    Set dbs = CurrentDb() 
    Debug.Print Me.ID 

    strClient = "Select * from ANG_CLIENTS where DATA_TYPE='TEXT' AND ID=" & Me.ID 

    Set rs = dbs.OpenRecordset(strClient) 

我得到的最後一個任務「運行時錯誤3061參數太少預計1」。

回答

1

您需要通過記錄的字段定義自定義函數中循環,並只提取文本字段的名稱。然後

名稱可以添加到您的SQL腳本。

Public Function TextDataFileds(rs As DAO.Recordset) As String 

    Dim fld As DAO.Field, item As String 

    For Each fld In rs.Fields 
     If fld.Type = 10 Then 'dbText 
      item = IIf(Len(item) = 0, fld.Name, item & ", " & fld.Name) 
     End If 
    Next fld 

    TextDataFileds = item 
End Function 

然後你可以這樣調用:

Sub Test() 
    On Error GoTo ErrProc 

    Dim rs As DAO.Recordset 
    Set rs = CurrentDb().OpenRecordset("SELECT TOP 1 * FROM ANG_CLIENTS;") 

    Dim sql_ As String 
    sql_ = "SELECT " & TextDataFileds(rs) & " FROM ANG_CLIENTS WHERE ID=" & Me!ID 

    rs.Close 
    Set rs = Nothing 

    Set rs = CurrentDb().OpenRecordset(sql_) 

    '.... 

Leave: 
    rs.Close 
    Set rs = Nothing 
    On Error GoTo 0 
    Exit Sub 

ErrProc: 
    MsgBox Err.Description, vbCritical 
    Resume Leave 
End Sub 
+0

@Parfait謝謝,我忽略了這個。 –

+0

@Parfait:「I如果不是VBA函數」 ......哦,是。輸入'VBA.I'和IntelliSense將它作爲您的首選。 – Gustav