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
ENUNCIADA !
Postada em 07/07/2008 22:25 hs         
"Operação não permitida quando o objeto está aberto"............o código inteiro é esse:
 
Private Sub cmdok_Click()
    Set cn = New ADODB.Connection
    Set rdvenda = New ADODB.Recordset
    Set rdcfop = New ADODB.Recordset
    Set rdcliente = New ADODB.Recordset
    Set rditem = New ADODB.Recordset
   
    On Error GoTo trata_erro
    cn.CursorLocation = adUseClient
    rdvenda.CursorLocation = adUseClient
    cn.open "Provider=MSDASQL;Data Source= Prog"

    rdvenda.open "SELECT * FROM Vendas where date .........", cn...........
    rdcfop.open "SELECT * FROM CFOP,VENDAS where cfop.cfop = vendas.cfop ", cn...........
    rdcliente.open "SELECT * FROM CLIENTES,VENDAS where CLIENTES.CPF = VENDAS.CPFCNPJ" ,cn
   
    Set rdvenda.DataSource = rdvenda
   
If rdvenda.EOF And rdcfop.EOF And rdcliente.EOF Then
    MsgBox "Não há registros no periodo informado", vbExclamation, "Exportação de dados"
    Exit Sub
    End If

registros = rdvenda.RecordCount
Open txtcaminho1.Text For Output As #1

Do Until rdvenda.EOF
Print #1, "20"; "|"; "I"; "|"; "|"; rdcfop!descricao; "|"; "1"; "|"; Format(rdvenda!nf, "000000000");  ""

rditem.open "SELECT * FROM ITENSVENDAS,VENDAS where ITENSVENDAS.NF = VENDAS.NF  ", cn...
 
Do While Not rditem.EOF
      Print #1, "30"; "|"; rditem!codprod; "|"; rditem!materials; "|"; "|"; rditem!unidade; "|"; ""
   rditem.MoveNext
Loop
 
Print #1, "40"; "|"; "0,00"; "|"; "0,00"; "|"; "0,00"; "|"; "0,00"; "|"; Format(rdvenda!total, "0.00"); ""

rdvenda.MoveNext
rdcfop.MoveNext
rdcliente.MoveNext

Loop
 
Print #1, "90"; "|"; Format(rdvenda.RecordCount, "00000"); "|";
 
Close #1
rdvenda.Close
rdcfop.Close
rdcliente.Close
rditem.Close
 
MsgBox "Foram exportados " & registros & " para o arquivo texto", vbInformation
 
Exit Sub
trata_erro:
MsgBox Err.Description
End Sub
TÓPICO EDITADO
 
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
Postada em 08/07/2008 19:07 hs            
Colega eu ainda estou meio confuso quanto ao que exibir, mas vamos fazer mais esta tentativa
 
Private Sub cmdok_Click()
    Set cn = New ADODB.Connection
    Set rdvenda = New ADODB.Recordset
    Set rdcfop = New ADODB.Recordset
    Set rdcliente = New ADODB.Recordset
    Set rditem = New ADODB.Recordset
   
    On Error GoTo trata_erro
    cn.CursorLocation = adUseClient
    rdvenda.CursorLocation = adUseClient
    cn.open "Provider=MSDASQL;Data Source= Prog"

    rdvenda.open "SELECT * FROM Vendas where date .........", cn...........
    rdcfop.open "SELECT * FROM CFOP,VENDAS where cfop.cfop = vendas.cfop ", cn...........
    rdcliente.open "SELECT * FROM CLIENTES,VENDAS where CLIENTES.CPF = VENDAS.CPFCNPJ" ,cn
    rditem.open "SELECT * FROM ITENSVENDAS,VENDAS where ITENSVENDAS.NF = " & rdvenda!NF , cn...
    '  lembrando que estou tratando o campo NF como numerico para texto entra a aspa simples
    Set rdvenda.DataSource = rdvenda
   
If rdvenda.EOF And rdcfop.EOF And rdcliente.EOF Then
    MsgBox "Não há registros no periodo informado", vbExclamation, "Exportação de dados"
    Exit Sub
    End If

registros = rdvenda.RecordCount
Open txtcaminho1.Text For Output As #1

Do Until rdvenda.EOF
Print #1, "20"; "|"; "I"; "|"; "|"; rdcfop!descricao; "|"; "1"; "|"; Format(rdvenda!nf, "000000000");  ""

 
Do While Not rditem.EOF
      Print #1, "30"; "|"; rditem!codprod; "|"; rditem!materials; "|"; "|"; rditem!unidade; "|"; ""
   rditem.MoveNext
Loop
 
Print #1, "40"; "|"; "0,00"; "|"; "0,00"; "|"; "0,00"; "|"; "0,00"; "|"; Format(rdvenda!total, "0.00"); ""

rdvenda.MoveNext
rdcfop.MoveNext
rdcliente.MoveNext

Loop
 
Print #1, "90"; "|"; Format(rdvenda.RecordCount, "00000"); "|";
 
Close #1
rdvenda.Close
rdcfop.Close
rdcliente.Close
rditem.Close
 
MsgBox "Foram exportados " & registros & " para o arquivo texto", vbInformation
 
Exit Sub
trata_erro:
MsgBox Err.Description
End Sub
     
Ama
Pontos: 2843
UBERLÂNDIA
MG - BRASIL
ENUNCIADA !
Postada em 09/07/2008 00:06 hs         
Do Until rdvenda.EOF
Print #1, "20"; "|"; "I"; "|"; "|"; rdcfop!descricao; "|"; "1"; "|"; Format(rdvenda!nf, "000000000");  ""
'voce abre recordset aqui
rditem.open "SELECT * FROM ITENSVENDAS,VENDAS where ITENSVENDAS.NF = VENDAS.NF  ", cn...
 
Do While Not rditem.EOF
      Print #1, "30"; "|"; rditem!codprod; "|"; rditem!materials; "|"; "|"; rditem!unidade; "|"; ""
   rditem.MoveNext
Loop
'voce deveria fechar recordset rditem aqui
Print #1, "40"; "|"; "0,00"; "|"; "0,00"; "|"; "0,00"; "|"; "0,00"; "|"; Format(rdvenda!total, "0.00"); ""

rdvenda.MoveNext
rdcfop.MoveNext
rdcliente.MoveNext

Loop
   
FKNMALTA
FRANCA
SP - BRASIL
ENUNCIADA !
Postada em 09/07/2008 14:30 hs         
Bom a primeira forma está gerando os itens das duas notas apenas na primeira, ai gera quatro itens na primeira e na segunda não gera o registro 30.
 
Na segunda forma se eu fechar o recordset ao voltar no loop da a mensagem de que não é permitida quando o objeto está fechado.
 
Alguem tem alguma idéia  de como faz pra gerar o registro 30???dar o loop no registro trinta de acordo com a nota do registro 20.
TÓPICO EDITADO
 
Página(s): 2/2     « ANTERIOR  

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