很简单的问题,但现在我被困了好几个小时。
我想将“性别”字段更改为喜欢这个如果性别为0,则1如果性别为1,则为2
这是我的代码:
Private Sub Run_Click()
Dim db As DAO.Database
Dim queryDef As DAO.queryDef
Dim sql As String
Dim fields As Variant
Set db = CurrentDb
sql = ""
fields = Array("Name", "Gender", "Age")
For Each queryDef In db.QueryDefs
If queryDef.Name = "Q_List" Then
db.QueryDefs.Delete "Q_List"
Exit For
End If
Next
sql = sql & "SELECT "
For Each field In fields
If field = "Gender" Then
sql = sql & IIf([Gender] = 0, 1, 2) & " AS Gender, "
Else
sql = sql & "[" & field & "]" & ", "
End If
Next
sql = Left(sql, Len(sql) - 2)
sql = sql & " FROM T_Customer"
Set queryDef = db.CreateQueryDef("Q_List", sql)
DoCmd.TransferText acExportDelim, , "Q_List", "C:\customerdata\data.txt", True, , 65001
MsgBox "Done!"
End Sub
问题是,IIF并不适用于所有数据行,但它确实比较了作为字符串的Gender是否等于0整数,并且我的所有Gender行都变为2 ...生成的Sql如下:
SELECT T_Customer.[Name], 2 AS Gender, T_Customer.[Age] FROM T_Customer
需要帮助请
解决了!!!
通过在SQL语句IN STRING中编写IIF,并使用相同的字段名称,如下所示:IIf([tablemame]。[Gender] = 0,1,2)&“AS Gender”,
我想你省略了两个引号。如果在对象循环中后面的行应该是:
sql = sql & " IIf([Gender] = 0, 1, 2) " & " AS Gender, "
现在sql变量是
SELECT [Name], IIf([Gender] = 0, 1, 2) AS Gender, [Age] FROM T_Customer