Ver Mensaje Individual
  #1  
Antiguo 14-12-2006
locorez locorez is offline
Registrado
 
Registrado: ene 2006
Posts: 4
Reputación: 0
locorez Va por buen camino
error, el índice o la clave principal no puede tener un valor null

Hola,
tengo un pequeño problema con el programa y es el siguiente.
Tengo una query conectada a un grid:
Código SQL [-]
SELECT Stock.ID, Revistes.Revista, Revistes.Preu, Stock.Num, Stock.DataA, Stock.Quantitat, Revistes.Distribuidora
FROM Revistes INNER JOIN Stock ON Revistes.Codi_Barres = Stock.ID;
luego tengo este evento:
Código Delphi [-]
procedure TStock.adotblRevistesIDChange(Sender: TField);
begin
  adotblrevistesID.OnChange := nil;
  adoqry9.Close;
  adoqry9.SQL.Text := 'Select * from revistes where Codi_Barres = :codi';
  adoqry9.Parameters.ParamByName('codi').Value := adotblRevistes.FieldByName('ID').AsString;
  adoqry9.Open;
  adotblRevistes.FieldByName('Revista').AsString := adoqry9Revista.asstring;
  adotblRevistes.FieldByName('Preu').AsCurrency := adoqry9Preu.ascurrency;
  adotblRevistes.FieldByName('Distribuidora').AsString := adoqry9Distribuidora.asstring;
  adotblRevistes.FieldByName('DataA').Value := now;
  adotblRevistes.FieldByName('Num').AsString := Codicorrecte(adotblRevistes.fieldbyname('ID').asstring);
  //adoqry9.Close;
  if length(adotblRevistes.FieldByName('Num').AsString) > 13 then
    adotblRevistes.FieldByName('ID').AsString := copy(adotblRevistes.FieldByName('Num').AsString,0,13);
  adotblrevistesID.OnChange :=  adotblRevistesIDChange;
end;
Ahora explico de que va todo esto XD
El usuario tiene un dbgrid donde solo estan en readonly false el ID y la cantidad. El ID es el código de la revista. Bien, una vez el usuario introduce el codigo de barras de la revista, salta el evento que antes he escrito y hago una consulta, esta:
Código SQL [-]
select * from Revistes where codi_Barres = :codi
Le paso el parametro ID y una vez he identificado la revista con la consulta, relleno los campos con la información. Una vez hecho esto el usuario solo debe de poner la cantidad y ya está. Pero no, a la hora de grabar los datos en la query me pone: "error, el índice o la clave principal no puede tener un valor null". Pero si cierro y vuelvo abrir, el registro, es decir, la revista nueva, ya estará en la tabla stock. No se porque ocurre y todo que funciona queda feo. Alguien me puede ayudar?
Saludos y gracias.

Se me olvidaba, todo y que en el codigo tengo puesto adotblRevistes es una query.

Última edición por locorez fecha: 14-12-2006 a las 01:50:08.
Responder Con Cita