Вставить данные из списка в таблицу - PullRequest
0 голосов
/ 19 апреля 2020

Не могли бы вы, ребята, помочь, пожалуйста, по следующему коду

В качестве прилагаемого снимка экрана формы счета-фактуры я пытаюсь вставить данные из списка в таблицу с помощью al oop, но он не работает. Пожалуйста, проверьте ниже 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

enter image description here

Спасибо

Ответы [ 3 ]

2 голосов
/ 19 апреля 2020

На самом деле ваша ошибка заключается в следующем:

---> Вы смешивали Текст (необходим апострофный текстовый маркер ['] до и после) и Нумери c (нет необходимости в ['] до и после) в вашем 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. Получите значение Sql из вашего Окна непосредственного доступа или из вашего Окна локальной переменной
  3. Копировать В вашем буфере обмена Sql текст
  4. Откройте вашу базу данных
  5. Попробуйте создать Новый запрос на основе Sql Script, который у вас есть в Ваш буфер обмена.
  6. Проверьте, прошла ли вставка успешно.
  7. Если это произойдет, значит, проблема в вашем VBA. Если нет, то в скрипте есть проблема.
  8. Пожалуйста, обновите ваш вопрос новой ошибкой, и мы увидим, как ее решить!

Надеюсь, это поможет вам!

0 голосов
/ 21 апреля 2020

Я изменил тип данных Item_ID с Number на Short text в таблице, и я попробовал следующий код, но все же он не работает.

'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
0 голосов
/ 19 апреля 2020

Я подозреваю, что некоторые данные, которые вы пытаетесь вставить, это цифры c, поэтому нет необходимости заключать значения в одинарные кавычки. Например, если все значения имеют числовое значение c, то вы должны использовать это внутри l oop:

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, но не зная, что вы делаете и почему, трудно сказать наверняка.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...