|
Postada em 14/08/2005 09:52 hs
Olá Pessoal, montei um form que faz a criação de uma tabela e o LOAD de um arquivo texto num banco de dados access, o código (abaixo) esta fazendo a criação porém NÃO esta fazendo a inserção dos dados, alguém poderia me dizer onde é que eu errei ??? Aí vai o código para analise.... Sub ParseToArray(sLine As String, A() As String)
Dim P As Long, MaxPos As Long, I As Long ' InStr é retornar a posição do caractere de busca na cadeia ' de caracteres de origem P = InStr(sLine, ";")
Do While P A(I) = Mid$(sLine, MaxPos + 1, P - MaxPos - 1) MaxPos = P I = I + 1 P = InStr(MaxPos + 1, sLine, ";", vbBinaryCompare) Loop A(I) = Mid$(sLine, MaxPos + 1)
End Sub
Private Sub Command1_Click() Dim F As Long, sLine As String, A(0 To 2) As String Dim db As New ADODB.Connection, rs As Recordset On Error GoTo trata_erro
db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:Testeiblio.mdb;" db.Open
' Abre arquivo Txt F = FreeFile Open TxtNomArq.Text For Input As F ' Set db = DBEngine(0).OpenDatabase(Text2.Text)
On Error Resume Next ' Verifica se a tabela ja existe db.Execute "DROP TABLE ImportaTexto" ' Cria a estrutura da Tabela db.Execute "CREATE TABLE ImportaTexto (CODIGO LONG, [Desc] TEXT (50), " _ & "Valor CURRENCY )"
With rs .ActiveConnection = db .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockBatchOptimistic [COLOR=red] .Open ("select count(*) as CODIGO from ImportaTexto")[/COLOR] .ActiveConnection = Nothing End With If rs.RecordCount < 1 Then Dim Cria As String Do While Not EOF(F) Line Input #F, sLine ParseToArray sLine, A() 'Faz a insersão dos Dados Cria = "insert into ImportaTexto(CODIGO, Desc, Valor)" & "Values('" _ & Val(A(0)) & "'," & A(1) & ",'" & Val(A(2)) & "')" db.Execute Cria Loop
MsgBox "Arquivo texto importado com sucesso !! "
rs.Close db.Close
Close #F End If Exit Sub trata_erro: MsgBox "Ocorreu o erro ==> " & Err.Description End Sub
Private Sub Command2_Click() End End Sub
O trecho do código em vermelho é onde se encontra o meui problema (acho), pois as variaveis tem conteudo, porém quando olho a tabela ImportaTexto no banco access a tabela esta criada, porém sem conteúdo (em branco). Pessoal da uma forcinha aí... Vlw !!!!!!
|
|
|
|
|
Postada em 14/08/2005 12:00 hs
Campos numericos não se coloca entre aspas simples, so campos texto Se o seu código e o seu valor forem campos numerios e o seu desc for campo texto tenta assim: Cria = "insert into ImportaTexto(CODIGO, Desc, Valor)" & "Values(" _ & Val(A(0)) & ",'" & A(1) & "'," & Val(A(2)) & ")" db.Execute Cria
Knight http://host.csti.eti.br CSTI WebHosting Hospedando Idéias
|
|
|
|
Postada em 14/08/2005 17:58 hs
Valeu pela dica Knight, porém, NÃO funcionou.... , voce ou alguém tem mais alguma sugestão ?? de qualquer forma Valeu por enquanto
" O preguiçoso muito quer e nada tem, mas, o trabalhador satisfaz o apetite "
|
|
|
|
Postada em 15/08/2005 10:05 hs
"Campos numericos não se coloca entre aspas simples"...Knight Knight, vou discordar de você, se o número for decimal deve-se colocar entre apostrofo sim.... Jorge tente dessa maneira, pois entre o ")" e "Values" não estava ficando com 1 espaço...ok Cria = "insert into ImportaTexto(CODIGO, Desc, Valor) Values(" _ & Val(A(0)) & ",'" & A(1) & "','" & Val(A(2)) & "')" db.Execute Cria
©Copyright by Leandro Luiz
|
|
|
|
Postada em 15/08/2005 11:08 hs
tenta antes de executar a string colocar doevents.. assim ele dah um tempinho antes de inserir/atualizar pode ser isso
|
|
|
|
Postada em 15/08/2005 16:06 hs
Blz Leandro?? Os números q coloco entre apostrofo aqui n funcionam. Tenho de colocar sem apostrofo para q não gere nenhum erro e grave corretamente no banco de dados. Valores monetários tenho de substituir a (,) pelo (.) usando replace. Mas mesmo assim, fica ai a dica e a novidade pra mim Vivendo e aprendendo hehehe Flw!!
Knight http://host.csti.eti.br CSTI WebHosting Hospedando Idéias
|
|
|
|