FieldCount do SQLQuery

Delphi

09/10/2009

Pessoal, conto novamente com a ajuda de você. Tenho una TDataModule, e no AfterOpen de um TSQLQuery faço uma rotina que utilizao FieldCount.

Ele retorna 11 no FieldCount.

Porém, depois se tendo dar um FieldCount neste TSQLQuery ele retorna 0. Porque será?

Uso SQL Server + DBExpress + ClientDataSet

[]s

Marlon


Et.vinny

Et.vinny

Curtidas 0

Respostas

Steve_narancic

Steve_narancic

09/10/2009

Se você está usando ClientDataset, você deve usar o FieldCount no [b:61c5c9ac02]Clientdataset[/b:61c5c9ac02], pois o clientdataset carrega os dados em memória e fecha o TSQLQuery...


GOSTEI 0
Et.vinny

Et.vinny

09/10/2009

Ok, entendi pq acontece isto.
Porém um coisa que ainda não consegui entender é:

Uso SQL com campo identity, e tenho um cadastro mestre-detalhe.
Para eu conseguir salvar vários detalhes antes do mestre estar salvo, vou dando somente Post no ClientDataSet. Mas para ter vários valores iguais na PK que eu não conheç, pois são identity, eu coloco ProviderFlags como:


ClientDataSet.Fields[_rintFieldCount].ProviderFlags := [];



O primeiro registro salva sem problemas. Porém o segundo não. Dá erro de [b:bda7dc2d9e]´Key Violation´[/b:bda7dc2d9e].

Porém o problema é que depois de fazer ApplyUpdate, tenho que colocar os ProviderFlgas para essa configuração:


ClientDataSet.Fields[_rintFieldCount].ProviderFlags := [pfInUpdate, pfInWhere, pfInKey];



E agora não tenho a minima ideia aonde está o problema.

[]s,

Marlon


GOSTEI 0
POSTAR