Vba 将数据从列表框插入表

Vba 将数据从列表框插入表,vba,ms-access,Vba,Ms Access,你们能帮我写下面的代码吗 作为附带的发票表单屏幕截图,我试图用循环将数据从Listbox插入到表中,但它不起作用。请检查下面的VBA,让我知道哪里出了问题 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_D

你们能帮我写下面的代码吗

作为附带的发票表单屏幕截图,我试图用循环将数据从Listbox插入到表中,但它不起作用。请检查下面的VBA,让我知道哪里出了问题

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


谢谢

我怀疑您尝试插入的某些数据是数字,因此不需要将值用单引号括起来。例如,如果所有的值都是数字,那么您可以在循环中使用:

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字段,但不知道您在做什么以及为什么要这样做,很难说清楚


关于,

我怀疑您尝试插入的某些数据是数字,因此不需要将这些值用单引号括起来。例如,如果所有的值都是数字,那么您可以在循环中使用:

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字段,但不知道您在做什么以及为什么要这样做,很难说清楚


实际上,你的错误是:

--->您在Sql中混合了文本(需要撇号文本标记[']前后)数字(不需要[']前后)


更新

所以
Item_ID现在是Text
然后我不得不放回(')。所以,现在请使用这个脚本

调试Sql查询: 现在,您需要做的是:

  • CurrentDb.executesql上设置断点
  • 即时窗口或从局部变量窗口获取
    Sql
    的值
  • Sql
    文本复制到剪贴板中
  • 打开您的数据库
  • 尝试根据剪贴板中的
    Sql脚本创建一个新查询
  • 测试插入是否成功
  • 如果失败,则问题在于VBA。如果不是,则脚本有问题
  • 请用新错误更新您的问题,我们可以看看如何解决它
    希望这对你有帮助

    实际上,你的错误是:

    --->您在Sql中混合了文本(需要撇号文本标记[']前后)数字(不需要[']前后)


    更新

    所以
    Item_ID现在是Text
    然后我不得不放回(')。所以,现在请使用这个脚本

    调试Sql查询: 现在,您需要做的是:

  • CurrentDb.executesql上设置断点
  • 即时窗口或从局部变量窗口获取
    Sql
    的值
  • Sql
    文本复制到剪贴板中
  • 打开您的数据库
  • 尝试根据剪贴板中的
    Sql脚本创建一个新查询
  • 测试插入是否成功
  • 如果失败,则问题在于VBA。如果不是,则脚本有问题
  • 请用新错误更新您的问题,我们可以看看如何解决它
    希望这对你有帮助

    我已将表中的Item_ID数据类型从Number更改为短文本,并尝试了以下代码,但仍然不起作用

    '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
    

    我已将表中的Item_ID数据类型从Number更改为短文本,并尝试了以下代码,但仍然不起作用

    '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
    


    嗨,桑提亚,1。请您也展示一下您问题的表格结构,以便我们更好地调查您的操作不起作用的原因?#2。另外,如果您可以更新问题:错误消息是什么Hi Siriniaina,我正在共享我的数据库,请打开frmSEHi@Sandhya的表单,我现在在下面为您发布了答案。请阅读我给您的评论,为什么您的查询失败,您可以尝试解决方案。但不要忘记删除注释,因为它们只是为了帮助您,VBA Access不接受它们!嗨,桑提亚,1。请您也展示一下您问题的表格结构,以便我们更好地调查您的操作不起作用的原因?#2。另外,如果您可以更新问题:错误消息是什么Hi Siriniaina,我正在共享我的数据库,请打开frmSEHi@Sandhya的表单,我现在在下面为您发布了答案。请阅读我给您的评论,为什么您的查询失败,您可以尝试解决方案。但不要忘记删除注释,因为它们只是为了帮助您,VBA Access不接受它们!感谢您的回复,前两个字段为文本输入,其余均为数值。感谢您的回复,前两个字段为文本输入,其余均为数值。@SandhyaSS,请不要忘记投票,并在对您有效时接受答案。非常感谢你。祝福:)我只是在上面的代码块中尝试了相同的方法。我删除了所有数字字段的('),并将其保留在前两个文本输入中,最后无效。以下字段是我的表字段和数据类型。ID:自动编号库存编号:短文本项\U ID:编号数量:编号LP:编号MRP:编号C\U光盘:编号GST:编号IGST:编号LPR\U总计:编号R\U总计:编号请立即尝试,并在工作时通知我!请检查下面张贴的代码。我确实试过那样做,但仍然不起作用(@SandhyaSS,请不要忘记投票,并在对您有效时接受答案。非常感谢。祝福:)我刚刚尝试了与上面代码块相同的方法。我删除了所有数字字段的('),并将其保留在前两个文本输入中,最后无效。以下字段是我的表字段和数据类型。ID:自动编号库存号:短文本项\U ID:编号数量:Num