O QUE PODE ESTAR ERRADO

COSTELINHA 24/08/2006 10:47:50
#166991
Bom dia, tenho a seguinte funcao e sempre da erro na formula.
Se alguem puder ajudar, valeu.


Public Sub imprimir()
Dim formula As String
abrir_banco
sql = "select * from conven"
rs.Open sql, cn, adOpenDynamic, adLockBatchOptimistic

If rs.RecordCount = 0 Then
Exit Sub
Else
rs.MoveFirst
End If

formula = "{conven.nomecli}= " & txt_nom.Text And "{conven.pago}=" & False

cry_fec.ReportFileName = App.Path & "\impressão\Fechamento de contas.rpt"
cry_fec.SelectionFormula = formula
cry_fec.RetrieveDataFiles
cry_fec.Action = 0
fechar_banco
End Sub

USUARIO.EXCLUIDOS 24/08/2006 11:00:03
#166996
bom, naum entendo muito de banco de dados,
mas acho que pode estar ocorrendo erro na hora de informar o endereço do arquivo em:

cry_fec.ReportFileName = App.Path & "\impressão\Fechamento de contas.rpt"

pq se o programa estiver rodando na raiz, App.Patch retorna x:\
ficando por exemplo c:\\impressão.....
você pode dár um

cry_fec.ReportFileName = replace(App.Path & "\impressão\Fechamento de contas.rpt", "\\","\")

ou então

if mid(App.Path, len(App.Path)) = "\" then
cry_fec.ReportFileName = App.Path & "impressão\Fechamento de contas.rpt"
else
cry_fec.ReportFileName = App.Path & "\impressão\Fechamento de contas.rpt"
end if


falwos,
USUARIO.EXCLUIDOS 24/08/2006 12:20:17
#167039
Tente colocar o código abaixo, inseri aspas simples na sua fórmula e mudei o and de lugar, pois, ele estava como sendo uma variável, fora das " , veja se funciona

Public Sub imprimir()
Dim formula As String
abrir_banco
sql = "select * from conven"
rs.Open sql, cn, adOpenDynamic, adLockBatchOptimistic

If rs.RecordCount = 0 Then
Exit Sub
Else
rs.MoveFirst
End If

formula = "{conven.nomecli}= '" & txt_nom.Text "' and {conven.pago}=" & False

cry_fec.ReportFileName = App.Path & "\impressão\Fechamento de contas.rpt"
cry_fec.SelectionFormula = formula
cry_fec.RetrieveDataFiles
cry_fec.Action = 0
fechar_banco
End Sub


Se não funcionar vo,te a postar.
COSTELINHA 25/08/2006 17:06:05
#167420
nao funcionou nao, ele da o segunte erro

Type Mistash

Valeu
USUARIO.EXCLUIDOS 25/08/2006 17:09:45
#167423
qual o tipo do seu campo conven.pago? no banco ele grava false ou 0?

se ele gravar zero no banco tente colocar o seguinte:

formula = "{conven.nomecli}= '" & txt_nom.Text "' and {conven.pago}=0"

Porque o erro agora não é na formulaÂÂÂ'e sim ele esta reclamando que o tipo de dados que você esta passando na clausula de comparação não é igual ao tipo do banco. e como se você estivesse passando um texto para um campo numério, um campo texto para um data..

Sendo assim a sintaxe da formula esta certa, falta acertas o tipo dos campos.

Espero que resolva.


USUARIO.EXCLUIDOS 25/08/2006 19:13:10
#167457
Resposta escolhida
O que acontece com a instrução:

formula = "{conven.nomecli}= " & txt_nom.Text And "{conven.pago}=" & False

cry_fec.ReportFileName = App.Path & "\impressão\Fechamento de contas.rpt"
cry_fec.SelectionFormula = formula


Após ser passada ao CR, você pode ter, por exemplo, a seguinte fórmula de seleção:

"{conven.nomecli}=José Da Silva {conven.pago}=Falso"

E essa fórmula vai mesmo gerar erro. Agora, veja o resultado, se a montagem fosse, por exemplo:

formula = Empty
formula = formula & "{conven.nomecli}= '" & txt_nom.Text &"' "
formula = formula & "And {conven.pago}=False "

A formula acima seria avaliada assim:

"{conven.nomecli}= 'José Da Silva' And {conven.pago}=False"

Bem, essa segunda fomula tem maior probabilidade de ser avaliada sem erros, bastando para isso que existam os campos citados, com os tipos de dados corretos.

USUARIO.EXCLUIDOS 01/09/2006 17:58:58
#168983
Bem, você terá de olhar como foi montando o arquivo rpt no Crystal, pois, pelo que parece seu rpt esta apontando para um banco de dados sql...

Verifique a estrutura do RPT e veja como o mesmo foi montado.
Tópico encerrado , respostas não são mais permitidas