Fórum erro ao clicar no titulo do dbgrid #265209
13/01/2005
0
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
Curtir tópico
+ 0Posts
13/01/2005
Otto
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:
Gostei + 0
14/01/2005
Livia
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
Gostei + 0
17/01/2005
Livia
Gostei + 0
17/01/2005
Emerson Nascimento
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.
Gostei + 0
19/01/2005
Livia
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)