Estou usando o esquema SqlConnection, SqlDataset, DataSetProvider e ClientDataset. Crio os campos no SqlDataset em tempo de execução. Os campos são criados e estão funcionando, exceto quando existem campos que não pertencem à tabela principal, ou seja, campos que são trazidos através de Join e não serão gravados. Ao tentar gravar o registro aparece mensagem "Column unknow". É como se a propriedade ProvidersFlags não estivesse configurada. Abaixo o código, o que está faltando?
precedure CriaCampos; var i : Integer; Campos : Array of TField; begin with SQLDataset1 do begin CommandText := 'SELECT CAMPOS FROM TABELA WHERE 1 = 0' Open; Setlength(Campos, FieldCount); for i := 0 to FieldCount-1 do begin if (Fields[i].DataType = ftSmallInt) then Campos[i] := TSmallIntField.Create(MeuDataset) else if (Fields[i].DataType = ftInteger) then Campos[i] := TIntegerField.Create(MeuDataset) else ... MeuDataset.Fields.Add(Campos[i]); MeuDataset.Fields[i].Create(MeuDataset); MeuDataset.Fields[i].FieldName := Fields[i].FieldName; MeuDataset.Fields[i].Name := 'MeuDataset' + Fields[i].FieldName; MeuDataset.Fields[i].FieldKind := fkData; MeuDataset.Fields[i].Required := Fields[i].Required; MeuDataset.FieldDefs.AddFieldDef; MeuDataset.FieldDefs.Items[i].Name := Campos[i].FieldName; MeuDataset.FieldDefs.Items[i].Required := Campos[i].Required; MeuDataset.FieldDefs.Items[i].DataType := Campos[i].DataType; end; end; //Definindo campo chave MeuDataset.FieldByName('CAMPO').ProviderFlags := [pfInUpdate, pfInWhere, pfInKey]; //Definindo campos que não pertencem a tabela principal e não será salvo MeuDataset.FieldByName('NUMCONTA').ProviderFlags := []; MeuDataset.FieldDefList.Create(MeuDataset); end; _______________________________________________________ Yahoo! Mail - Sempre a melhor opção para você! Experimente já e veja as novidades. http://br.yahoo.com/mailbeta/tudonovo/