IMPORTAR SEMPRE 2 CAMPOS DE UM TXT

MARCELOFAZAN 31/05/2010 20:43:35
#343472
PESSOAL ,
TENHU O CAMPO DATA E O CODIGO

PRECISO IMPORTAR O TXT PARA MDB

VERIFICANDO PELO CODIGO E SOMENTE ATUALIZANDO A DATA

VI QUE TENS MUITOS EXEMPLOS MAIS NO CASO PRECISO DE SUBSITUIE NA TABELA
E NAO QUE GRAVE NOVAMENTE

VERIFICAR E GRAVAR

Abs
Marcelo Fazan
JESUEL.OLIVEIRA 31/05/2010 20:51:50
#343473
Amigo, o txt esta tabulado como esta separado,

Você pode fazer DO WHILE este TXT é renovodo ou verificou deleta.
Existem várias formas, coloque o LAYOUT do TXT e se pode apagar o txt após uso.
MARCELOFAZAN 31/05/2010 21:22:28
#343478
00001 20100630
00002 20100615
00003 20100622
00004 20100618
00005 20100621
00006 20100622
00007 20100610
00008 20100611
00009 20100609
00010 20100611
00011 20100610
00012 20100614
00013 20100616
00014 20100611



preciso procurar no mdb e sobrepor pros codigos da primeira fileira
subsituir a data que é o segundo campo

campo
codigo e data

caso presicar trocar o formato da data , eu altero se for facilitar algo

JESUEL.OLIVEIRA 01/06/2010 10:50:21
#343518
TXT para MDB

Use a função MID

Na primeira mensagem mostra o código e no segundo mostra a data.

   
MsgBox Mid(Text1, 1, 5)
MsgBox Mid(Text1, 6, 9)
MARCELOFAZAN 01/06/2010 13:38:45
#343539
Entao Conhecei aqui


e tava querendo abrir o banco , esta me dando o erro 3343
unrecognized database format ??

tentei fazer assim num cmd

Private Sub Ler()
Final = [Ô][Ô]
Dim dbBanco As Database
Dim rsLinhas As Recordset
Set dbBanco = OpenDatabase(App.Path & [Ô]\busca1.mdb[Ô])

Dim data As String
Dim codigo As String

Dim Sql As String
Sql = [Ô]select* from buscar[Ô]
Set rsLinhas = dbBanco.OpenRecordset(Sql)
Arquivo = App.Path & [Ô]\mensalidade.mens_mes.txt[Ô]
On Error Resume Next

ArqLivre = FreeFile
On Error Resume Next
Open Arquivo For Input As #ArqLivre
If Err.Number = 53 Then
On Error GoTo 0
MsgBox [Ô]ARQUIVO NÃO ENCONTRADO[Ô], , [Ô]AVISO[Ô]
Final = [Ô]fim[Ô]
Exit Sub
ElseIf Err.Number <> 0 Then
MsgBox [Ô]Erro: [Ô] & Err.Number
Exit Sub
End If

Line Input #ArqLivre, Registro

While Not EOF(ArqLivre)
rsLinhas.AddNew
rsLinhas!data = Registro
rsLinhas!codigo = Registro
rsLinhas.Update

Line Input #ArqLivre, Registro

Wend
Close #ArqLivre

rsLinhas.Clone
dbBanco.Close

End Sub
LIZANDER 01/06/2010 13:42:33
#343540
Ou então use a função split...

iARQ = FreeFile
Open Trim(seuarquivoTxt) For Input As iARQ
Line Input #iARQ, slinha
xVetor = Split(sResult, [Ô] [Ô])

A função split, nesse caso, vai criar um vetor em xVetor com dois índices, em xVetor(0) vc terá o código e em xVetor(1) vc terá a data no formato DTOS (Date to String, ou seja AAAAMMDD).

Para quem nunca foi programador DOS, é estranho esse modelo de data, porém é o único onde se pode colocar as datas na forma de string em ordem corretamente.

Então vc faria assim:

iARQ = FreeFile
Open Trim(seuarquivoTxt) For Input As iARQ
Do While Not EOF(iARQ)
Line Input #iARQ, slinha
If UBound(xVetor) = 1 Then
xVetor = Split(sResult, [Ô] [Ô])
...faz a busca do código e converte o DTOS em data usando cdate(mid(xvetor(1),7,2) &[Ô]/[Ô] & mid(xvetor(1),5,2) & [Ô]/[Ô] & mid(xvetor(1),1,4))
...atualiza o campo data
endif
loop
Close #iARQ

Espero ter ajudado!


MARCELOFAZAN 01/06/2010 13:58:35
#343543
00001 300610
00002 150610
00003 220610
00004 180610
00005 210610
00006 220610
00007 100610

se for pra ficar melhor amigo criei desse formato
mais tipo e esse parte

...faz a busca do código é um código nao autonumerador é uma sequencia de caracter de 5
...atualiza o campo data naquele formato acima

como eu faria essa parte do vetor com pra gravacao

na verdade so quero atualizar a data
e consultar pelo caracter de 5 denominado codigo

Abs
Marcelo Fazan

TECLA 01/06/2010 14:30:50
#343548
Resposta escolhida
Fiz uma pequena alteração na iteração.
Veja se resolve:

Private Sub Ler()
Final = [Ô][Ô]
Dim dbBanco As Database
Set dbBanco = OpenDatabase(App.Path & [Ô]\busca1.mdb[Ô])
Dim data As String
Dim codigo As String

Arquivo = App.Path & [Ô]\mensalidade.mens_mes.txt[Ô]
On Error Resume Next

ArqLivre = FreeFile
On Error Resume Next
Open Arquivo For Input As #ArqLivre
If Err.Number = 53 Then
On Error GoTo 0
MsgBox [Ô]ARQUIVO NÃO ENCONTRADO[Ô], , [Ô]AVISO[Ô]
Final = [Ô]fim[Ô]
Exit Sub
ElseIf Err.Number <> 0 Then
MsgBox [Ô]Erro: [Ô] & Err.Number
Exit Sub
End If

Line Input #ArqLivre, Registro

While Not EOF(ArqLivre)
con.Execute [Ô]UPDATE buscar SET data=[ô][Ô] & Trim(Mid(s, InStr(1, Registro, [Ô] [Ô]), Len(Registro))) & [Ô][ô] WHERE codigo=[Ô] & Trim(Mid(s, 1, InStr(1, s, [Ô] [Ô])))
Line Input #ArqLivre, Registro
Wend
Close #ArqLivre

dbBanco.Close
End Sub
MARCELOFAZAN 01/06/2010 15:04:48
#343555
Blz Tecla


conn.Execute [Ô]UPDATE buscar SET data=[ô][Ô] & Trim(Mid(s - quando chega nesse [Ô]s[Ô] Trim(Mid(s

da uma erro Variable not Defined

TECLA 01/06/2010 15:09:44
#343558
OK, substitua conn por dbBanco e tente novamente.
MARCELOFAZAN 01/06/2010 15:33:34
#343561
Tecla troquei a conexao e aponta o erro pro s

nao teria que declarar antes esse s


esse s serve para alguma coisa como delimitador se for o caso, posso colocar o txt assim

00001;20062010 se for pra facilitar
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas