FieldCount do SQLQuery
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
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
Curtidas 0
Respostas
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
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:
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:
E agora não tenho a minima ideia aonde está o problema.
[]s,
Marlon
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