SQLDataSet DataSetProvider ClientDataSet RUNTIME

Delphi

02/05/2008

Olá, estou com o seguinte problema:

Eu criei uma conexão em runtime, com SQLDataSet + DataSetProvider + ClientDataSet RUNTIME. Meu sistema estava funcionando corretamente, quando começou a dar o erro: Unable to find record. No key Specified.
Procurando no forum encontrei que deveria setar as propriedades PROVIDERFLAGS dos Fields.
Em designtime eu adicionei os Tfields no SQLDataSet e setei os providerflags, deu certinho, mas em runtime quando eu abro o clientDataSet os Fields do sqlDataSet somem e não consigo setar a propriedade providerflags dos campos no sqldataset.
Se eu seto os providerflags do clientdataSet o erro persiste.

Se eu seto os providerflags dos campos no SQLDataSet e depois abro o ClientDataSet, todos os fields do SQLDataSet somem e o erro continua.

O que devo fazer?


Rodrigoxcruz

Rodrigoxcruz

Curtidas 0

Respostas

Paulo

Paulo

02/05/2008

Não sei como vc faz. Não sei se meu post vai te resolver, mas comigo eu não tenho problemas. primeiro, tenho uma procedure que cria meus componentes. E crio outra procedure para setar os meus ProvidersFlag, no after open do componente criado, passando para a procedure o numero de chaves da tabela, ou seja, tenho procedure para tabela com uma chave primária, duas, até 7, que no meu caso é o limite das minhas tabelas. Vou te passar um exemplo de 3 chaves, aí é ir aumentando ou diminuindo. Minha procedure para criar os componentes, tem como padrão criar com qry + Nome da tabela. Então meus setadores de flags levam o nome de qryAfterOpen1Key, ou qryAfterOpen2Key e etc...
procedure qryAfterOpen3Key(DataSet: TDataSet); begin DataSet.Fields[0].ProviderFlags := DataSet.Fields[0].ProviderFlags + [pfInKey]; DataSet.Fields[1].ProviderFlags := DataSet.Fields[1].ProviderFlags + [pfInKey]; DataSet.Fields[2].ProviderFlags := DataSet.Fields[2].ProviderFlags + [pfInKey]; end;



GOSTEI 0
POSTAR