PREENCHIMENTO DE .TXT PULA REGISTRO DA TABELA

 Tópico anterior Próximo tópico Novo tópico

PREENCHIMENTO DE .TXT PULA REGISTRO DA TABELA

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#495338 - 07/10/2020 13:54:24

WEBIER
URUCUI
Cadast. em:Dezembro/2003


 Anexos estao visíveis somente para usuários registrados

Pessoal, com ajuda de vcs aqui do vbmania criei um as linhas de codigo onde cria um .txt e preenche ele com dados de uma tabela.

Segue o código:
Dim sSQL As String
Dim r As ADODB.Recordset
Dim Texto As String

sSQL = 'SELECT COD_BARRA, DESCRICAO,  (SELECT  TOP (1) VALOR_VV FROM  Produtos_Precos WHERE (COD_PRODUTO = produtos.CODIGO) ORDER BY CODIGO DESC) AS venda FROM  produtos WHERE LEN(COD_BARRA) > 6 ORDER BY DESCRICAO'
Set r = dbData.OpenRecordset(sSQL)

Texto = ''

Open 'C:\sistema\arquivo.txt' For Output As #1

Do While Not r.EOF
    Texto = r.GetString(, 1, '|')
    Print #1, Texto
   If Not r.EOF Then r.MoveNext
Loop

Close #1


Tudo aparentemente correto, mais hj a cliente me chamou dizendo que estava faltando produtos no .txt
então fiz o comparativo... a minha consulta no sql traz 5034 registros... porem no .txt tem 2514 linhas
ou seja, a metade.... analisando o resultado da sql e o txt (anexei um print), notei que ele pula os registros, ou seja,
na hora de inserir... ele pula do registro 1 pro 3, depois 5, depois 7
Então o problema está no preenchimento, pois a consulta trás os 5034 produtos corretamente.

Onde eu errei?




Resposta escolhida #495339 - 07/10/2020 14:08:59

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Amigo, o método GetString já pega TODO o conteúdo do recordset, não precisa e nem deve estar dentro de um loop. Por simplesmente tirar esse loop e pronto, seu problema estará resolvido.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#495341 - 07/10/2020 23:04:48

WEBIER
URUCUI
Cadast. em:Dezembro/2003


Citação:
:
Amigo, o método GetString já pega TODO o conteúdo do recordset, não precisa e nem deve estar dentro de um loop. Por simplesmente tirar esse loop e pronto, seu problema estará resolvido.


deixem sem o loop
Dim sSQL As String
Dim r As ADODB.Recordset
Dim Texto As String

sSQL = 'SELECT COD_BARRA, DESCRICAO,  (SELECT  TOP (1) VALOR_VV FROM  Produtos_Precos WHERE (COD_PRODUTO = produtos.CODIGO) ORDER BY CODIGO DESC) AS venda FROM  produtos WHERE LEN(COD_BARRA) > 6 ORDER BY DESCRICAO'
Set r = dbData.OpenRecordset(sSQL)

Texto = ''

Open 'C:\sistema\arquivo.txt' For Output As #1

    Texto = r.GetString(, 1, '|')
    Print #1, Texto

Close #1


Porem somente 1 registro foi para o .txt



#495342 - 07/10/2020 23:07:25

WEBIER
URUCUI
Cadast. em:Dezembro/2003


Problema resolvido...
era só tirar o If Not r.EOF Then r.MoveNext

obg parceiro



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por WEBIER em 07/10/2020 23:07:40