在访问 VBA 中将 excel 数字转换为短文本

convert an excel number to a short text in access VBA

您好,我有一个 table 访问权限,它从 excel 获取数据,就像这样

Public Sub ImportExcel(fileName As String)
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "JobNumber", fileName, False, "K2:K2"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "DateTable", fileName, False, "C3:C3"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Supplier", fileName, False, "C5:C5"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Graphic", fileName, False, "C6:C6"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Shift", fileName, False, "L1:L1"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Size", fileName, False, "L3:L3"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "RollInfo", fileName, False, "B10:F102"
Call CheckNullValues
Call AddLookUps
Call AddPressData
Call deleteZigZagTables
End Sub

我在将 excel 中的 C6 值转换为访问中的文本时遇到问题我目前正在做的是这个

Public Sub AddPressData()
Dim SQLstring As String
Dim GraphicString As String
Dim rst As Recordset

SQLstring = "SELECT F1 FROM GRAPHIC;"
Set rst = CurrentDb.OpenRecordset(SQLstring)
If Not IsNumeric(rst.Fields(0).Value) Then
    SQLstring = "INSERT INTO Press ( MasterRollNumber, JobNumber, DateDay, Shift, Supplier, Graphic, [Size], [Linear Measure], [Pallet Number] ) SELECT RollInfo.F1, JobNumber.F1, DateTable.F1, Shift.F1, Supplier.F1, Graphic.F1, (Size.F1), RollInfo.F3, RollInfo.F4 FROM RollInfo, JobNumber, DateTable, Shift, Supplier, Graphic, [Size] WHERE NOT ISNULL(RollInfo.F1);"
    CurrentDb.Execute SQLstring, dbFailOnError
Else
    SQLstring = "INSERT INTO Press ( MasterRollNumber, JobNumber, DateDay, Shift, Supplier, Graphic, [Size], [Linear Measure], [Pallet Number] ) SELECT RollInfo.F1, JobNumber.F1, DateTable.F1, Shift.F1, Supplier.F1, CSTR(Graphic.F1), (Size.F1), RollInfo.F3, RollInfo.F4 FROM RollInfo, JobNumber, DateTable, Shift, Supplier, Graphic, [Size] WHERE NOT ISNULL(RollInfo.F1);"
    CurrentDb.Execute SQLstring, dbFailOnError
End If
End Sub

大多数时候图形是一个字符串,但有时它可以是一个数字,当我 运行 代码是一个数字时,它只会将每条记录的字段留空。

如果有人有任何建议,那将是一个很大的帮助 谢谢

有很多方法可以做到这一点,但我会这样做,因为这样你就根本不需要 If 语句。

 Graphic.F1 & ''

当您将字符串与数字连接时,结果是一个字符串。

CSTR 是一个 VBA 函数,而您正试图在 SQL 语句中使用它。

在构建 SQL 字符串时,您可以使用连接运算符和字符串转换函数,例如:

s = "Hello " & CStr(Cells(1, 1)) & "world"

注意:我强烈建议您设置 SQL 字符串的格式,以便更好地阅读。例如:

    SQLstring = _
        "INSERT INTO Press( MasterRollNumber, JobNumber, DateDay, Shift, Supplier, Graphic, [Size], [Linear Measure], [Pallet Number] ) " & _
        "      SELECT RollInfo.F1, JobNumber.F1, DateTable.F1, Shift.F1, Supplier.F1, Graphic.F1, (Size.F1), RollInfo.F3, RollInfo.F4 " & _
        "      FROM RollInfo, JobNumber, DateTable, Shift, Supplier, Graphic, [Size] " & _
        "      WHERE NOT ISNULL(RollInfo.F1);"