将数据从列表框插入表

时间:2020-04-19 18:16:23

标签: vba ms-access

你们能帮忙提供以下代码吗

作为附件的发票表单屏幕截图,我试图通过循环将列表框中的数据插入到表中,但是它不起作用。请检查下面的VBA,让我知道我要去哪里了。

height: 1px

enter image description here

谢谢

3 个答案:

答案 0 :(得分:2)

实际上,您的错误是这样的:

--->您正在混合文本(需要Apostrophy文本标记[']之前和之后)数字(不需要[']之前和之后)在您的Sql中:


更新

'Qty: Number 
'LP: Number 
'MRP: Number 
'C_Disc: Number 
'GST: Number 
'IGST: Number 
'LPR_Total: Number 
'R_Total: Number    

Private Sub btn_Save_Click()

Dim i As Integer
Dim Sql As String

    For i = 0 To ItemsListBox.ListCount - 1 Step 1
        Sql = "INSERT INTO tblSE_B( Inv_No, " & _
                                   "Item_ID," & _
                                   "Qty," & _
                                   "LP, " & _
                                   "MRP," & _
                                   "GST," & _
                                   "IGST," & _
                                   "C_Disc," & _
                                   "LPR_Total," & _
                                   "R_Total)" & _
                " VALUES('" & txtInvNo & "','" & _              
                            ItemsListBox.Column(0, i) & "'," & _
                            ItemsListBox.Column(1, i) & "," & _ 
                            ItemsListBox.Column(2, i) & "," & _ 
                            ItemsListBox.Column(3, i) & "," & _ 
                            ItemsListBox.Column(4, i) & "," & _ 
                            ItemsListBox.Column(5, i) & "," & _ 
                            ItemsListBox.Column(6, i) & "," & _ 
                            ItemsListBox.Column(8, i) & "," & _ 
                            ItemsListBox.Column(9, i) & ");"
            CurrentDb.Execute Sql

    Next i
          MsgBox "Successfully done", vbInformation, "Sales"

End Sub

所以Item_ID is now Text然后我不得不放回(')。因此,请立即使用此脚本。

调试Sql查询:

现在这是您需要做的:

  1. CurrentDb.Execute Sql上设置一个断点
  2. 立即窗口本地变量窗口
  3. 获取Sql的值
  4. 在剪贴板中复制Sql文本
  5. 打开您的数据库
  6. 尝试根据剪贴板中的Sql Script创建新查询
  7. 测试插入是否成功。
  8. 如果成功,则问题出在您的VBA中。如果不是,则说明脚本有问题。
  9. 请使用新的错误更新您的问题,我们将看到解决方法!

希望这对您有帮助!

答案 1 :(得分:0)

我怀疑您要插入的某些数据是数字数据,因此不需要将值包装在单引号中。例如,如果所有值都是数字,则可以在循环中使用它:

CurrentDb.Execute "INSERT INTO tblSE_B(Inv_No,Item_ID,Qty,LP,MRP,GST,IGST,C_Dsic,LPR_Total,R_Total) VALUES(" & txtInvNo & "," & ItemsListBox.Column(0, i) & "," & ItemsListBox.Column(1, i) & "," & ItemsListBox.Column(2, i) & "," & ItemsListBox.Column(3, i) & "," & ItemsListBox.Column(4, i) & "," & ItemsListBox.Column(5, i) & "," & ItemsListBox.Column(6, i) & "," & ItemsListBox.Column(8, i) & "," & ItemsListBox.Column(9, i) & ")"

当您只需要ID字段就可以存储所有这些字段时,存储所有这些字段可能也不是一种好的数据库做法,但是如果不知道自己在做什么以及为什么这么做,很难确定。

此致

答案 2 :(得分:0)

我已将表中的Item_ID数据类型从“数字”更改为“短文本”,并且确实尝试了以下代码,但是仍然无法正常工作。

'ID: AutoNumber 
'Inv_No: Short Text 
'Item_ID: Short Text 
'Qty: Number 
'LP: Number 
'MRP: Number 
'C_Disc: Number 
'GST: Number 
'IGST: Number 
'LPR_Total: Number 
'R_Total: Number    

Private Sub btn_Save_Click()

Dim i As Integer

    For i = 0 To ItemsListBox.ListCount - 1 Step 1
    CurrentDb.Execute "INSERT INTO tblSE_B( Inv_No, " & _
                                           "Item_ID," & _
                                           "Qty," & _
                                           "LP, " & _
                                           "MRP," & _
                                           "GST," & _
                                           "IGST," & _
                                           "C_Dsic," & _
                                           "LPR_Total," & _
                                           "R_Total)" & _
                        " VALUES('" & txtInvNo & "','" & _              
                                    ItemsListBox.Column(0, i) & "'," & _
                                    ItemsListBox.Column(1, i) & "," & _ 
                                    ItemsListBox.Column(2, i) & "," & _ 
                                    ItemsListBox.Column(3, i) & "," & _ 
                                    ItemsListBox.Column(4, i) & "," & _ 
                                    ItemsListBox.Column(5, i) & "," & _ 
                                    ItemsListBox.Column(6, i) & "," & _ 
                                    ItemsListBox.Column(8, i) & "," & _ 
                                    ItemsListBox.Column(9, i) & ")"     
          Next i
          MsgBox "Successfully done", vbInformation, "Sales"

End Sub