PDA

Ver la Versión Completa : ayuda error query:field 'id' not found


edgar_prospero
30-08-2012, 18:22:25
que hay amigos aqui traigo un problemilla con ayuda de este foro logre avanzar en mi programa pero tambein me salio otro problemita al tratar de ejecutr el sifuiente codigo me marca el error ayuda error query:field 'id' not found y esto es en cuanto ejecuto el programa y no se que pueda ser:

DataSet.FieldByName('id').AsInteger := AutoId;
Dec(AutoId);
end;



procedure TForm4.guardarClick(Sender: TObject);
var AutoId:integer;
begin
clientdataset1.ApplyUpdates(0);
clientdataset1.Refresh;
AutoId := -1;

end;



procedure TForm4.queryAfterOpen(DataSet: TDataSet);
begin

DataSet.FieldByName('id').ProviderFlags := DataSet.FieldByName('id').ProviderFlags - [pfInUpdate];

end;

el error me lo marca en esta ultima linea

ecfisa
30-08-2012, 18:30:38
Hola edgar.

El error es claro, te está diciendo: no existe en la tabla o consulta un campo llamado 'id'. ¿ Estás seguro que es el nombre correcto o que lo incluiste en la consulta ?

Saludos.

edgar_prospero
30-08-2012, 18:40:10
si si existe, pues ya e guardado registros y creo que es la ultima linea porque si le pongo folio en lugra de id que tambien existe me sale el error pero diciendo que no existe folio

ecfisa
30-08-2012, 18:42:57
Hola edgar.

¿ Podrías poner la consulta SQL que estas usando ?

Saludos.

edgar_prospero
30-08-2012, 18:50:37
no se a cual consulta te refieres o ando un poco perdido en eso, no se si me puedas orientar para contestar tu pregunta, ya que tengo varios componentes para mi sistema como son TMyquery, cliendataset1, datasetprovider1, datasource1

ecfisa
30-08-2012, 19:03:17
Hola edgar.

A ver si me puedo explicar, si por ejemplo en la propiedad SQL.Text de tu query tuvieras una consulta de este tipo:
SELECT CODIGO, PRECIO, CANTIDAD FROM ARTICULOS

Y luego intentaras esto:

ShowMessage(query.FieldByName('DETALLE').AsString);

Recibirías el mensaje: "query:field 'DETALLE' not found". Por que aún existiendo el campo DETALLE en la tabla ARTICULOS, este no fué seleccionado en la consulta.

Saludos.

edgar_prospero
30-08-2012, 19:07:09
a ok en mi query aparace esto :

select * from entradas where folio = :folio

ecfisa
30-08-2012, 19:15:17
Hola edgar.

Disculpa, recién veo como tenes tu conección, proba ejecutando la acción sobre el TClientDataSet.

...
with ClientDataSet1 do
FieldByname('FOLIO').ProviderFlags := FieldByName('FOLIO').ProviderFlags - [pfInUpdate];
...


Saludos.

edgar_prospero
30-08-2012, 19:21:35
lo hice como me dijiste pero ahora me marca este error: 'clientdataset1: circular provider references not allowed'

ecfisa
30-08-2012, 19:25:57
Hola edgar.

Es que no sé como tienes relacionados query-datasetprovider-clientdataset-datasource, estoy disparando a oscuras...

Saludos.:)

edgar_prospero
30-08-2012, 19:41:36
tengo un dbgrid que esta ligado con un datasource este a su vez esta con un clientdataset y este en su propiedad de provider name esta con un datasetprovider y este en su propiedad dataset esta con un clientdataset. como observacion en la propiedad params del clientdatsetesta folio. lo que hago es que voy agregando registros temporalmente al dbgrid para despues guardarlos en la base de datos, de igual manera tambien muestro registros ya guardados

ecfisa
30-08-2012, 22:28:19
Hola edgar.
tengo un dbgrid que esta ligado con un datasource este a su vez esta con un clientdataset y este en su propiedad de provider name esta con un datasetprovider y este en su propiedad dataset esta con un clientdataset
No termino de entender si hay mas de un ClientDataSet en juego, pero si no es así, conecta la propiedad DataSet del DataSetProvider con el Query y luego aplica el código del mensaje #8.

Saludos.

edgar_prospero
31-08-2012, 00:05:02
no nomas hay un clientdataset ya conecte la propiedad dataset en query y aplique el codigo que me indicaste y donde me indicaste pero al tratar de agregar 2 registros seguidos me marca 'key violation'

ecfisa
31-08-2012, 00:17:50
no nomas hay un clientdataset ya conecte la propiedad dataset en query y aplique el codigo que me indicaste y donde me indicaste pero al tratar de agregar 2 registros seguidos me marca 'key violation'
Hola.

Ese error cae en la misma categoría que Casimiro menciona aqui (http://www.clubdelphi.com/foros/showpost.php?p=440816&postcount=34).

Saludos.

edgar_prospero
31-08-2012, 00:22:37
exacto, nomas tengo una clave primaria y es la de id que es autoincremental y pues creo que ya estoy como empece con el mismo problema, si quito la llave primaria si puedo guardar de varios registros a la vez, pero no puedo eliminar registros, pero si pongo clave primaria si puedo elminar registros pero ya no puedo guardar, se supone que todo este codigo qeu traigo es para poder agregar carios registros al dbgrid pero como al pasarlo al dbgrid el valor de id es null asi que al meter el segundo regisrto tambien es null por eso me ,marca el error y es lo que no e podido solucionar

edgar_prospero
31-08-2012, 00:43:11
ya me desespero un poco esto te adjunto parte del proyecto para ver si viendolo me puedes decir donde tengo el horror jeje gracias espero me puedas echar la mano