USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Erro Type Mismatch ao gerar arquivo texto
FKNMALTA
FRANCA
SP - BRASIL
Postada em 05/07/2008 20:29 hs         
Estou gerando um arquivo texto na seguinte estrutura:
20-NF
30-ITEM NF
40-TOTAL
quando eu lanço uma nota com apenas um item gera normalmente, agora quando a nota tem mais de um item da o erro Type Mismatch e gera o arquivo apenas com o primeiro item da nota. Ta aí o codigo:
 
   
If rdvenda.EOF And rditensvenda.EOF And rdcliente.EOF
    MsgBox "Não há registros no periodo informado", vbExclamation, "Exportação de dados"
    Exit Sub
    End If
   
rdvendas.MoveMax
rditensvenda.MoveMax
rdclientes.MoveMax
rdvendas.MoveMin
rditensvenda.MoveMin
rdcliente.MoveMin
rdcli3.MoveMin

registros = rdcli.RecordCount
Open txtcaminho1.Text For Output As #1
 
Do Until rdvendas.EOF And rditensvenda.EOF
 
Print #1, "20";  "I";  rdcli1!descricao; 
Print #1, "30";  rditensvenda!codprod; "|"; rdcli3!materials; 
 
rdvendas.MoveNext
rditensvenda.MoveNext
rdcliente.MoveNext
Loop
 
Close #1
rdvendas.Close
rditensvenda.Close
rdcliente.Close
MsgBox "Foram exportados " & registros & " para o arquivo texto", vbInformation, "form1"
 
Exit Sub
trata_erro:
MsgBox Err.Description
End Sub
 
alguma coisa errada nos movenext, moveMin ou moveMax???ou tem que colocar o 30 entre do e loop?
Obs ( não é movmin é movf.i.r.s.t e não é movmax é movm.a.x, coloquei entre pontos porque a pagina ta transformando em min e max)
TÓPICO EDITADO
   
0ut0fBound
VILA VELHA / ES
ES - BRASIL
ENUNCIADA !
Postada em 05/07/2008 23:22 hs            
Veja só,


Do Until rdcli1.EOF And rdcli.EOF And rdcli2.EOF And rdcli3.EOF
Print #1, "20";  "I";  rdcli1!descricao;
Print #1, "30";  rdcli3!codprod; "|"; rdcli3!materials;
Print #1, "40"; Format(rdcli!total, "0.00"); ; ""
Print #1, "50"; "fixo"; ""
Print #1, "60"; "fixo; ""
rdcli.MoveNext
rdcli1.MoveNext
rdcli2.MoveNext
rdcli3.MoveNext
Loop


Se os recordsets não tiverem a mesma quantidade de registros ele dará pau, pois um deles chegará ao final e não encontrará mais registros.

Não sei exatamente o que é rdcli* então não posso te ajudar muito. :(


------------------------------------------
Maycon Maia Vitali (0ut0fBound)
http://maycon.hacknroll.com
http://blog.hacknroll.com
Hack'n Roll
   
FKNMALTA
FRANCA
SP - BRASIL
ENUNCIADA !
Postada em 06/07/2008 16:35 hs         
rdcli é o recordset , tem 4 cada um com um filtro diferente em uma tabela....
 
rdcli.CursorLocation = adUseClient
    cn.open "Provider=MSDASQL;Data Source= Leviathan"
    rdcli.open "SELECT * FROM Vendas where date BETWEEN '" & data1.Text & "' AND '" & data2.Text & "', cn, adOpenDynamic, adLockBatchOptimistic,
 
Eu coloquei o registro 30 dentro de um do until....loop, só que trouxe todos itens e não apenas daquela nota do registro 20...
TÓPICO EDITADO
 
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 07/07/2008 12:19 hs            
quando usar datas faça utilizanodo o (#) e não aspas simples veja
 
  rdcli.open "SELECT * FROM Vendas where date BETWEEN #" & data1.Text & "# AND #" & data2.Text & "#, cn, adOpenDynamic, adLockBatchOptimistic,
 
 
   
FKNMALTA
FRANCA
SP - BRASIL
ENUNCIADA !
Postada em 07/07/2008 15:39 hs         
O Type Mismatch eu resolvi colocando o registro 30 entre DO....LOOP,como nosso amigo 0ut0fBound disse (que não podia ter mais de um registro o recordset).Só que o loop do registro 30 ta saindo errado, com todos itens da tabela. Alguem ai tem alguma idéia pra fazer o LOOP no registro 30 apenas com os itens da nota e não de todas???
 
rdvenda.open "SELECT * FROM Vendas where date .............
rditem.open "SELECT * FROM ITENSVENDAS,VENDAS where ITENSVENDAS.NF = VENDAS.NF  ", cn...
 
Do Until rdvenda.EOF
 
Print #1, "20"; "|"; rdvenda!nf
 
rditem.MoveMin
  Do While Not rditem.EOF
     Print #1, "30"; "|"; rditem!codprod; ""
  rditem.MoveNext
Loop
 
rdvenda.MoveNext
Loop
 
rdvenda.Close
rditem.Close
 
Exemplo:
Nota 1, Itens: A,B
Nota 2, Itens: D,E
 
Ta gerando:
 
20- NOTA 1
30- ITEM A
30- ITEM B
30- ITEM C
30- ITEM D
 
20-NOTA 2
30-ITEM A
30-ITEM B
30-ITEM C
30-ITEM D
 
DEVERIA SER:
 
20 - NOTA 1
30 - ITEM A
30 - ITEM B
 
20 - NOTA 2
30 - ITEM C
30 - ITEM D
TÓPICO EDITADO
 
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 07/07/2008 18:06 hs            
Vamos do principio, eu não havia entendido a lógica da coisa, mas vamos tentar assim
 
rdvenda.open "SELECT * FROM Vendas where date .............
Do Until rdvenda.EOF
 
Print #1, "20"; "|"; rdvenda!nf
rditem.open "SELECT * FROM ITENSVENDAS where NF =" & rdvenda!NF, cn...
  Do While Not rditem.EOF
     Print #1, "30"; "|"; rditem!codprod; ""
  rditem.MoveNext
Loop
 
rdvenda.MoveNext
Loop
 
rdvenda.Close
rditem.Close
 
faça um teste e veja se resolve
 
TÓPICO EDITADO
 
Página(s): 1/2      PRÓXIMA »

CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página