[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