[firebase-br] Sobre DBExpress - Off

Francisco Thiago jeandeadlucky em yahoo.com.br
Ter Ago 23 18:14:53 -03 2005


Li os outros e-mails e pensei mais um pouco para responder novamente.

Olha, várias coisas podem estar acontecendo... ainda mais por causa do 
select que você está fazendo... Mas o mais provável é que o TDataSetProvider 
esteja gerando o código errado.

Você pode comprovar isso utilizando o SQLMonitor do DBExpress e verificando 
o SQL gerado pelo DataSetProvider.

Porque o erro acontece?

Provavelmente você está alterando um campo que vem do join. O 
DataSetProvider identificou que alguma coisa foi alterada e mandou gerar o 
update/insert. Só que como - possívelmente - o campo modificado é um campo 
do join - e por isso no pfInUpdate dele DEVE estar false - o DataSetProvider 
não gera nada... ou pior, gera sim. Algo como

update tabela set
where
 ...

Isso é um bug. Corrigido, segundo a borland, no UpdatePack1.
Encontrei um código da internet que se modificado no Delphi, arrumaria este 
bug também....
(fico devendo o endereço, não achei)

Bem... de imediato o que você pode fazer:

1- Certificar-se de que um campo real na tabela seja atualizado (mudar para 
o mesmo valor, não conta como modificação)
2- Utilizar o evento BeforeUpdateRecord e atualizar na unha.... (não sei 
como ficaria a transação no caso)
3- Utilizar um método que faça a alteração pra você. Neste caso, você iria 
gerar o SQL na unha.

Quando eu encontro um problema deste tipo, ou em uma situação onde tenho de 
atualizar a família inteira (avô, pai, filhos, conhunado e tia solteironha) 
eu crio uma procedure que recebe a property Data do CDS e gero o SQL em 
tempo de execução... Eu tenho as minhas próprias rotinas de criação de SQL e 
controle transacional... Se quiser, te passo as de SQL... (Insert e Edit que 
fiz).

Resumindo, é isso.

[]'s e boa sorte


Francisco Thiago de Almeida
Enter & Plug Informática
Divisão: Desenvolvimento e Banco de dados
Franca / SP
msn: thiago em enterplug.com.br


PS: Tô até vendo os comentários que este e-mail vai gerar hehehehehe





----- Original Message ----- 
From: "Roberto - Sui Generis" <roberto em suigenerisinf.com.br>
To: "Firebase" <lista em firebase.com.br>
Sent: Tuesday, August 23, 2005 4:08 PM
Subject: [firebase-br] Sobre DBExpress - Off


Estou usando DBExpress, Mestre detalhe com NestedDataset
Quando entro no Sistema e gravo uma Nota Fiscal com seus Itens... A Nota e
os Itens são gravados corretamente, mas quando tento gravar a Segunda Nota
Fiscal ocorre erro na linha:

"if ClientDataSetMestre.ApplyUpdates(0) = 0 then"

 o seguinte erro ocorre:

 Token unknown - line 2, char 1 where
 Obs: Já olhei meu select e a princípio está OK...

 Parece que algo fica pendente...

 Alguém tem uma idéia do que pode ser ???

 Roberto Krug



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa



	
	
		
_______________________________________________________ 
Yahoo! Acesso Grátis - Internet rápida e grátis. 
Instale o discador agora! http://br.acesso.yahoo.com/





Mais detalhes sobre a lista de discussão lista