Fórum erro ao clicar no titulo do dbgrid #265209

13/01/2005

0

olá!
Pq ocorre esse erro:
´SQLDA missing or incorrect version or incorrect number/type of variables´
Ocorre quando clico no titulo do dbgrid p/ fazer consulta(master-detail).
Estou usando SQLQuery,DataSetProvider e DataSource.(D6 e interbase)

Livia


Livia

Livia

Responder

Posts

13/01/2005

Otto

Olá Livia, tudo bem??

posta aqui a rotina que vc tem no OnTitleClick do dbgrid pra que os demais possam ler e analisar seu codigo e possivelmente dizer onde ocorre o erro.. :wink:


Responder

Gostei + 0

14/01/2005

Livia

Olá Otto, estou bem obrigada e vc?

Bem essa é a rotina q está no OnTitleClick:

procedure T_CadGeneric.DBGrid1TitleClick(Column: TColumn);
begin
if Column <> nil then begin
Coluna_Busca := Column.Field.FieldName;
end;
if CDS.IndexFieldNames <> ´´ then begin
DBGrid1.SelectedField := cds.FieldByName(CDS.IndexFieldNames);
DBGrid1.Columns.Items[DBGrid1.SelectedIndex].Title.Color :=
DBGrid1.FixedColor;
end;

//se o campo naum for blob ou memo e se for do tipo data
if not (Column.Field.DataType in [ftblob, ftMemo]) then
if Column.Field.FieldKind = fkData then begin
CDS.IndexFieldNames := Coluna_Busca; //[color=red]é aki q dá erro[/color]
GroupBox2.Caption := ´Buscar por ´ + Column.Field.DisplayLabel;
GroupBox2.Enabled := true;
Edit1.SetFocus;
Column.Title.Color := $00FFBB77;
end;
end; //if

end;



Pelo q percebi, eu consigo fazer a busca quando tenho poucos registros(em torno de 700). Pois tenho uma query filha q está ligada numa outra query.E para fazer a ligação dos dados das queries nos forms uso clients.
Se puderem me ajudar, agradeço!!
Livia


Responder

Gostei + 0

17/01/2005

Livia

sobe


Responder

Gostei + 0

17/01/2005

Emerson Nascimento

eu fiz dessa forma e não obtive erro (fiz o teste numa grade com mais de 1000 registros):

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
    if Column nil then
        Coluna_Busca := Column.Field.FieldName;

    if ClientDataset1.IndexFieldNames ´´ then
    begin
        DBGrid1.SelectedField := ClientDataset1.FieldByName(ClientDataset1.IndexFieldNames);
        DBGrid1.Columns.Items[DBGrid1.SelectedIndex].Title.Color :=
        DBGrid1.FixedColor;
    end;

    //se o campo naum for blob ou memo e se for do tipo data
    if not (Column.Field.DataType in [ftblob, ftMemo]) and
        (Column.Field.FieldKind = fkData) then
    begin
        DBGrid1.SelectedField := ClientDataset1.FieldByName(Coluna_Busca);
        ClientDataset1.IndexFieldNames := Coluna_Busca;
        GroupBox2.Caption := ´ Buscar por ´+Column.Field.DisplayLabel+´ ´;
        GroupBox2.Enabled := true;
        Edit1.SetFocus;
        Column.Title.Color := $00FFBB77;
    end
    else
        GroupBox2.Enabled := False;
end;

obs.: quanto à quantidade de registros na sua grade, não me parece uma boa prática ter mais de 700. deveria haver alguma regra de filtragem na seleção, porque da forma que está talvez gere um certo tráfego na rede.


Responder

Gostei + 0

19/01/2005

Livia

Emerson,
eu coloquei na propriedade packetrecord=20 do ClientDataset, então, no primeiro momento ele só me traz 20. Quando eu clico no titulo do dbgrid, ae ele me traz tudo. Sendo que esse é um form de cliente e não tenho como filtrar.
A tabela de cliente é filha de outra tabela que contém dados comuns entre fornecedores, clientes e vendedores.... Quando não é passado parâmetro p/ o cliente ele consegue fazer a busca, mas não acha seu correspondente.
Por ex., se dou um insert, o código (p/ fazer a relação de cliente e da tab. generica) deveria ser 2522 e o do cliente tbm 2522, mas sem parametro, o cod. do cliente vai p/ 1, ou seja, não ocorre relação cliente x tab. generica....

Livia


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar