INSERT INTO_LISTBOX
Dia amigos, tudo bem...
venho tentando fazer um Insert Into em um banco access 2000, usando um metodo que encontrei
aqui no VbMania, como nao estou usando as mesmas caracteristicas que usei em outro estudo e mais
eu nao tenho muita habilidade com esse metodo de gravacao.
alguns campos text e o conteudo de um ListBox, descartando o cabecalho, quando eu tento gravar
ocorre um erro em tempo de execucao que diz: numero de valores da consulta e campos de destino
nao coencidem. [Ô]run time erro 2147217900(80040e14)[Ô] - esse erro foi onde eu acho que mais me
aproximei da solucao.
Modulo com a funcao para o ListBox:
Private Declare Function SendMessage Lib [Ô]user32[Ô] _
Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Const LB_SETTABSTOPS = &H192
Public Sub ListColumns(lListHandle As Long)
Dim iNumColumns As Long
[ô] Coloque o nº de colunas que o ListBox e terá -1 no array a seguir:
Dim iListTabs(3) As Long
Dim Ret As Long
[ô] O ListBox terá 4 colunas
iNumColumns = 4
[ô] A 1º coluna terá 12 caracteres e a 2º 24
[ô] 24 caracteres * 2 = 24
iListTabs(0) = 96 [ô] 96/4 = 24 caracteres
iListTabs(1) = 48 [ô] 48/4 = 12 caracteres
iListTabs(2) = 48 [ô] 48/4 = 12 caracteres
iListTabs(3) = 48 [ô] 48/4 = 12 caracteres
Ret = SendMessage(lListHandle, _
LB_SETTABSTOPS, iNumColumns, iListTabs(0))
End Sub
Minha sub para tentar gravar:
Private Sub lvBConf_Click()
Dim SQL As String
Dim Dados() As String
For F = 6 To ListMov.ListCount - 1 [ô]começo a contagem do 5 por causa do cabeçalho
Dados = Split(ListMov.List(F), vbTab)
SQL = [Ô]INSERT INTO TbProjeto(Registro,DataRegistro,TpServ,Cliente,Itens,FatorUsado,TotalProjeto) VALUES ([Ô]
SQL = SQL & [Ô][ô][Ô] & TxtReg.Text & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & TxtDta.Text & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & CboTipServ.Text & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & TxtClt.Text & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & Dados(0) & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & Dados(1) & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & Dados(2) & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & Dados(3) & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & TxtFtUso.Text & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & TxtTlProj.Text & [Ô][ô])[Ô]
Set rs = cn.Execute(SQL)
Next F
Stop
End Sub
Amigos agradeco a atencao de todos da sala.
venho tentando fazer um Insert Into em um banco access 2000, usando um metodo que encontrei
aqui no VbMania, como nao estou usando as mesmas caracteristicas que usei em outro estudo e mais
eu nao tenho muita habilidade com esse metodo de gravacao.
alguns campos text e o conteudo de um ListBox, descartando o cabecalho, quando eu tento gravar
ocorre um erro em tempo de execucao que diz: numero de valores da consulta e campos de destino
nao coencidem. [Ô]run time erro 2147217900(80040e14)[Ô] - esse erro foi onde eu acho que mais me
aproximei da solucao.
Modulo com a funcao para o ListBox:
Private Declare Function SendMessage Lib [Ô]user32[Ô] _
Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Const LB_SETTABSTOPS = &H192
Public Sub ListColumns(lListHandle As Long)
Dim iNumColumns As Long
[ô] Coloque o nº de colunas que o ListBox e terá -1 no array a seguir:
Dim iListTabs(3) As Long
Dim Ret As Long
[ô] O ListBox terá 4 colunas
iNumColumns = 4
[ô] A 1º coluna terá 12 caracteres e a 2º 24
[ô] 24 caracteres * 2 = 24
iListTabs(0) = 96 [ô] 96/4 = 24 caracteres
iListTabs(1) = 48 [ô] 48/4 = 12 caracteres
iListTabs(2) = 48 [ô] 48/4 = 12 caracteres
iListTabs(3) = 48 [ô] 48/4 = 12 caracteres
Ret = SendMessage(lListHandle, _
LB_SETTABSTOPS, iNumColumns, iListTabs(0))
End Sub
Minha sub para tentar gravar:
Private Sub lvBConf_Click()
Dim SQL As String
Dim Dados() As String
For F = 6 To ListMov.ListCount - 1 [ô]começo a contagem do 5 por causa do cabeçalho
Dados = Split(ListMov.List(F), vbTab)
SQL = [Ô]INSERT INTO TbProjeto(Registro,DataRegistro,TpServ,Cliente,Itens,FatorUsado,TotalProjeto) VALUES ([Ô]
SQL = SQL & [Ô][ô][Ô] & TxtReg.Text & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & TxtDta.Text & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & CboTipServ.Text & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & TxtClt.Text & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & Dados(0) & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & Dados(1) & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & Dados(2) & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & Dados(3) & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & TxtFtUso.Text & [Ô][ô],[Ô]
SQL = SQL & [Ô][ô][Ô] & TxtTlProj.Text & [Ô][ô])[Ô]
Set rs = cn.Execute(SQL)
Next F
Stop
End Sub
Amigos agradeco a atencao de todos da sala.
dispare um msgBox na variável SQL pra vc ver o que o Jet tá recebendo. é o prieiro passo pra ver o que tá faltando.
MsgBox SQL
Leandro eu tinho colocado um stop para verificar e depois que vc me passou sou dica eu percebi que escrevi o comando no lugar errado, mais como eu ja desconfiava o erro ocorre porque tenho mudar a forma de calculo de meu modulo, que lida com o ListBox:
Modulo com a funcao para o ListBox:
Private Declare Function SendMessage Lib [Ô]user32[Ô] _
Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Const LB_SETTABSTOPS = &H192
Public Sub ListColumns(lListHandle As Long)
Dim iNumColumns As Long
[ô] Coloque o nº de colunas que o ListBox e terá -1 no array a seguir:
Dim iListTabs(3) As Long
Dim Ret As Long
[ô] O ListBox terá 4 colunas
iNumColumns = 4
[ô] A 1º coluna terá 12 caracteres e a 2º 24
[ô] 24 caracteres * 2 = 24
iListTabs(0) = 96 [ô] 96/4 = 24 caracteres
iListTabs(1) = 48 [ô] 48/4 = 12 caracteres
iListTabs(2) = 48 [ô] 48/4 = 12 caracteres
iListTabs(3) = 48 [ô] 48/4 = 12 caracteres
Ret = SendMessage(lListHandle, _
LB_SETTABSTOPS, iNumColumns, iListTabs(0))
End Sub
Agora eu ja fiquei horas a fio e nada de solucao, veja, eu tambem deixei uma imagem com a msgbox sql.
http://img33.imageshack.us/img33/1808/imagemmcs.jpg
Modulo com a funcao para o ListBox:
Private Declare Function SendMessage Lib [Ô]user32[Ô] _
Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Const LB_SETTABSTOPS = &H192
Public Sub ListColumns(lListHandle As Long)
Dim iNumColumns As Long
[ô] Coloque o nº de colunas que o ListBox e terá -1 no array a seguir:
Dim iListTabs(3) As Long
Dim Ret As Long
[ô] O ListBox terá 4 colunas
iNumColumns = 4
[ô] A 1º coluna terá 12 caracteres e a 2º 24
[ô] 24 caracteres * 2 = 24
iListTabs(0) = 96 [ô] 96/4 = 24 caracteres
iListTabs(1) = 48 [ô] 48/4 = 12 caracteres
iListTabs(2) = 48 [ô] 48/4 = 12 caracteres
iListTabs(3) = 48 [ô] 48/4 = 12 caracteres
Ret = SendMessage(lListHandle, _
LB_SETTABSTOPS, iNumColumns, iListTabs(0))
End Sub
Agora eu ja fiquei horas a fio e nada de solucao, veja, eu tambem deixei uma imagem com a msgbox sql.
http://img33.imageshack.us/img33/1808/imagemmcs.jpg
Leandro fico grato a vc e a todos do VbMania, que sempre tenho bons momentos aqui, valeu.
Eu conseguir resolver este problema, pegando o form de outro projeto e colocando no novo projeto e funcionou, agora tenho que saber como tenho que fazer se precisar mudar as sequencias dos campos e consulta, pois foi onde aconteceu o erro e nao conseguir solucionar. Vou estudar mais.
Mais uma vez, valeu a todos.
Eu conseguir resolver este problema, pegando o form de outro projeto e colocando no novo projeto e funcionou, agora tenho que saber como tenho que fazer se precisar mudar as sequencias dos campos e consulta, pois foi onde aconteceu o erro e nao conseguir solucionar. Vou estudar mais.
Mais uma vez, valeu a todos.
Tópico encerrado , respostas não são mais permitidas