Não mostrar registro ao abrir formulário

Delphi

24/10/2007

Estou com uma aplicação em D2007 e Firebird 2.0.3 usando dbexpress, os meus formulários só são criados quando vou abrí-los, assim como meus clientdataset´s são abertos quando da criação dos forms e fechados no fechamento dos mesmos, assim como minhas instruções sql tem na sua maioria parâmetros q são repassados em tempo de execução; se executar a aplicação e abrir o form, nenhum registro é mostrado como deve ser, já q não foi feita consulta para repassar o parâmentro, então faço a consulta, repasso o parametro e é mostrado o registro, blz, só q se fechar o form e abrir novamente o registro tá lá, como se ele guardasse o parametro e já jogasse no clientdataset, e é exatamento isso q não quero!! Quando abrir o form, quero limpo!!
Alguma sugestão?

Obrigado


Fajo

Fajo

Curtidas 0

Respostas

Marco Salles

Marco Salles

24/10/2007

Alguma sugestão?


Coloque a Propriedade poAllowComandText do DasaSetProvider para
True e faça

Na abertura do Form

Cds.Close; Cds.parametros:=Valor; Valor inexistente Cds.open;


talvez resolva....


GOSTEI 0
Alexandrej

Alexandrej

24/10/2007

Alguma sugestão? Obrigado


Acho que você não está destruindo o formulário devidamente.


GOSTEI 0
Alexandrej

Alexandrej

24/10/2007

[quote:099b1607a8=´Marco Salles´]Alguma sugestão?


Coloque a Propriedade poAllowComandText do DasaSetProvider para
True e faça

Na abertura do Form

Cds.Close; Cds.parametros:=Valor; Valor inexistente Cds.open;


talvez resolva....[/quote:099b1607a8]

Não resolve, a propriedade poAllowComandText apenas permite que seja alterada a instrução SQL dentro do cliente, os parâmetros são repassados pelo provider independente da propriedade estar setada True ou False.


GOSTEI 0
Marco Salles

Marco Salles

24/10/2007

No Livro Programação Para Banco De Dados De Ghinter pag 14
diz em seu paragrafo terceiro:
Abre aspas:
´A instrução Sql é gerada pelo DataSetProvider´

fecha aspas

No Curso De DbExpress De Ghinter no Capitulo XVIII Sobre CommandText Diz o Seguinte:
Abre aspas
´...o Cds se encarregara de enviar ao DataSetProvider , que vai repassa-lo ao Cursor DbExpress associado e Executar o comando no BD . [b:7195b6cc30]Você pode atê mesmo passar parametros <params> no ClientDataSet [/b:7195b6cc30].´

fecha aspas

mas voce diz:
Não resolve, a propriedade poAllowComandText apenas permite que seja alterada a instrução SQL dentro do cliente, os parâmetros são repassados pelo provider independente da propriedade estar setada True ou False.


Obrigado pela sua inform~ção . Vou tentar entrar em contato com o Autor
para que o mesmo faça as devidas correções em seu Artigo

Quanto a sugestão é claro que ela é expansivel a :

Cds.Close; 
cds.ComandText:=´Selct bla bla Where etc....´
Cds.parametros:=Valor; Valor inexistente 
Cds.open;



GOSTEI 0
Alexandrej

Alexandrej

24/10/2007

[quote:346e367ccc=´Marco Salles´]No Livro Programação Para Banco De Dados De Ghinter pag 14
diz em seu paragrafo terceiro:[/quote:346e367ccc]

Tirando as aspas o que ele diz foi o que eu disse.
Vou ser mais claro: essa propriedade não interfere em nada a leitura do parâmetro, então, seta-la para True ou False não faz diferença nenhuma.
É lógico que na instrução sql eu posso passar parâmetros. Entendeu agora? Qual o sentido de reescrever o comando SQL no lado do cliente? A razão de usar um CDS é manter a regra de negócio do outro lado, não no cliente. Espero que no livro citado o autor fale isso pelo menos e não aconselhe a usar poAllowCommandText, só explique qual sua finalidade.

Abraços.


GOSTEI 0
Marco Salles

Marco Salles

24/10/2007

´...o Cds se encarregara de enviar ao DataSetProvider , que vai repassa-lo ao Cursor DbExpress associado e Executar o comando no BD . [b:72b4600cf1]Você pode atê mesmo passar parametros <params> no ClientDataSet .[/b:72b4600cf1]´


ja disse que vou entrar em contato com o autor do artigo... Voce não
precisa me dar explicação

abraços


GOSTEI 0
Marco Salles

Marco Salles

24/10/2007

estava revendo as minhas mensagens alexandrej e verifiquei no primeiro
post algo que pudesse gerar todo este mau entendido... Tinha dito isto

Cds.Close; Cds.parametros:=Valor; Valor inexistente Cds.open;


Nesta mensagem eu omiti o CommandText o que eu Fiz no outro post... Parece que deu a impressão que para passar
parametros com Cds tivesse que necessariamente ter que a setar a propriedade para True

Cds.Close; cds.ComandText:=´Selct bla bla Where etc....´ Cds.parametros:=Valor; Valor inexistente Cds.open;


na omissão deste commandText ficou entender que para passar parametros atraves do Cds tivesse que cetar esta propriedade para True


Claro que se a mensagem original tivesse com o commandText , voce poderia questionar, tal como fez no Ultimo post

Qual o sentido de reescrever o comando SQL no lado do cliente


Se aplica em outro tipos de situaçoes <mais bla bla> , mas tirando quesitos de performance , < para desktop perda pequena> resolveria com certeza o problema do Fajo...


GOSTEI 0
POSTAR