Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error de 'Field valued requiered' (https://www.clubdelphi.com/foros/showthread.php?t=88171)

alexglez1255 22-04-2015 05:47:44

Error de 'Field valued requiered'
 
Tengo un problema a ver si me doy a entender bien...
tengo este procedimiento de busqueda

Código Delphi [-]
procedure Taltadecontratos.BtbuscarArticuloClick(Sender: TObject);
begin
  if Edcodarticulo.text='' then  begin
     showMessage('Debe escribir un codigo para buscar ');
     Edcodarticulo.SetFocus;
     end
 else
 begin
   if LogicaNegocio.CDSAlma.Locate('COD_ARTICULO',Edcodarticulo.Text,[loPartialKey])=false then
     showMessage('No existe ese articulo ')
   Else
     begin
       with logicanegocio do
         begin
          CDSAlma.Refresh;
          codigoarticulohallado:=CDSAlmaCOD_ARTICULO.Value;
          precioarticulohallado:=CDSAlmaPRECIO_VENTA.Value;
          descripcionarticulohallado:=CDSAlmaDESCRIPCION.Value;
          cdsArticContUnCliente.Open;
          cdsArticContUnCliente.insert;
-----> cdsArticContUnClienteCOD_ARTICULO.Value:=CDSAlmaCOD_ARTICULO.Value;
          cdsArticContUnClienteFECHA.Value:=Date;
          cdsArticContUnClienteHORA.Value:=Time;
         end;
      end;
   end;
end;

En cual al hallar el articulo de venta de un contrato lo trato
de insertar en una tabla que solo tiene los articulos del contrato manejo campos anidados

sin emabrgo al estar ejecutandose el programa en la linea marcada me da el siguiente error

project FALCON 2.0 raised excepcion EDBclient with message 'field valued requiered' process stopped Use Step or Run to continue..
Todos los datos ya los revise y desactive la propiedad REQUIRED... garcias por su ayuda

alexglez1255 22-04-2015 06:00:45

Código Delphi [-]
procedure Taltadecontratos.BtbuscarArticuloClick(Sender: TObject);
begin
  if Edcodarticulo.text='' then  begin
     showMessage('Debe escribir un codigo para buscar ');
     Edcodarticulo.SetFocus;
     end
 else
 begin
   if LogicaNegocio.CDSAlma.Locate('COD_ARTICULO',Edcodarticulo.Text,[loPartialKey])=false then
     showMessage('No existe ese articulo ')
   Else
     begin
       with logicanegocio do
         begin
           CDSAlma.Refresh;
           codigoarticulohallado:=CDSAlmaCOD_ARTICULO.Value;
           precioarticulohallado:=CDSAlmaPRECIO_VENTA.Value;
           descripcionarticulohallado:=CDSAlmaDESCRIPCION.Value;
           cdsArticContUnCliente.Open;
           cdsArticContUnCliente.insert;
------> cdsArticContUnClienteCOD_ARTICULO.Value:=CDSAlmaCOD_ARTICULO.Value;
           cdsArticContUnClienteFECHA.Value:=Date;
           cdsArticContUnClienteHORA.Value:=Time;
         end;
      end;
   end;
end;

ElKurgan 22-04-2015 08:17:27

¿Y has comprobado que el valor devuelto por "CDSAlmaCOD_ARTICULO.Value;" tenga un contenido no nulo?

Porque parece que es eso, se requiere un valor válido para pasarlo a "cdsArticContUnClienteCOD_ARTICULO.Value".

Podrías hacer algo así:

Código Delphi [-]
if VarIsNull(CDSAlmaCOD_ARTICULO.Value) then
  cdsArticContUnClienteCOD_ARTICULO.Value:= 0
else
  cdsArticContUnClienteCOD_ARTICULO.Value:=CDSAlmaCOD_ARTICULO.Value;

Vamos, es un suponer si el error efectivamente es el que creo.

Saludos

Casimiro Noteví 22-04-2015 09:47:38

Cita:

Empezado por alexglez1255 (Mensaje 491599)
...

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

alexglez1255 22-04-2015 15:24:41

gracias por tu sugerencia ElKurgan, no habia visto eso :) lo voy verificar...y voy a poner tags

pacopenin 22-04-2015 17:45:24

Una solución puede ser forzar el tipo de dato, utilizando en lugar de .value el correspondiente .asInteger, .asFloat, .asString, .asDateTime, etc.

alexglez1255 23-04-2015 01:49:31

Error de 'Field valued requiered' al entrar en modo de edición
 
disculpen creo que el error es exactamente cuando intento abrir la tabla para edicion
la tabla la abre bien pero cuando la pongo en modo edicion me marca el error
.. alguien sabe por que..?
Gracias jovenes por su apoyo
Código Delphi [-]
procedure Taltadecontratos.BtbuscarArticuloClick(Sender: TObject);
var
  codclie:integer;
begin
  if Edcodarticulo.text='' then
  begin
    showMessage('Debe escribir un codigo para buscar ');
    Edcodarticulo.SetFocus;
  end
  else
  begin
    if LogicaNegocio.CDSAlma.Locate('COD_ARTICULO',Edcodarticulo.Text,[loPartialKey])=false then
      showMessage('No existe ese articulo ')
    Else
    begin
      with logicanegocio do
      begin
        CDSAlma.Refresh;
        // guardo los datos de la tabla de datos de almacen para transferirlos a la
        // tabla de los articulso de los contratos
        codigoarticulohallado:=CDSAlmaCOD_ARTICULO.Value;
        precioarticulohallado:=CDSAlmaPRECIO_VENTA.Value;
        descripcionarticulohallado:=CDSAlmaDESCRIPCION.Value;
        // abro la tabla y la pongo en modo de edicion
        cdsarticContUnCliente.open;
        //al abrir la tabla para edicion da error
        cdsArticContUnCliente.edit;
        cdsArticContUnClienteFECHA.Value:=Date;
        cdsArticContUnClienteHORA.Value:=Time;
        cdsArticContUnClienteCOD_ARTICULO.AsInteger:=CDSAlmaCOD_ARTICULO.AsInteger;
      end;
    end;
  end;
end;

ecfisa 23-04-2015 11:31:51

Hola alexglez1255.

He combinado tu último tema en este hilo ya que se trata de lo mismo.

Por favor no crees un nuevo hilo con la misma consulta, de ese modo evitaremos resultados duplicados en las búsquedas. Agrega un nuevo mensaje en el hilo iniciál y este pasará a la cabecera de la lista en los últimos temas como si se tratara de uno nuevo.

Saludos y gracias por tu colaboracion :)

alexglez1255 24-04-2015 03:39:12

perfecto :o gracias por tu aclaracion...:) y tambien por sus ayudas

alexglez1255 25-04-2015 02:28:17

hola a todos, este es la razon por la que me da el error.:
cuando doy CDScontrauncliente.post tengo dos campos que tienen la propiedad NULL que son
CONSECUTIVO tipo integer
COD_CONTRATO tipo integer
estos al dar de alta el contrato los dos campos estan vacios ya que estos tienen un trigger que autoincrementa el valor de ambos al generar un nuevo registro....por lo tanto a la hora de gravarlos estos no tienen valor por eso creo que se genera el valor ... como puedo evitar ese error.?

gracias por su ayuda

ecfisa 25-04-2015 19:52:20

Hola alexglez1255.

Te hago unas consultas:
  • ¿ Que SGBD estas usando ?
  • ¿ En que evento se dispara el trigger ?
  • ¿ A que componente está asociado el TClientDataSet ?

Saludos :)

alexglez1255 26-04-2015 05:53:27

ya encontre el error, a ciencia cierta no se exactamente que era pero lo que hice recargue todos los campos en los query anidados
de los campos anidados y me cerciore que todos los campos que son null no fueran requeridos y hice lo mismo con CLIENDATASET recargue todos los campos y desactive los campos null, y con eso a la hora de abrir un cliendataset para edicion,grabar o insertar ya no me daba el error....muchas gracias por su apoyo....creo yo que algun campo no esta o conectado correctamente a a la base de datos o esta requerido por ser NULL...
gracias ECFISA,PACOPEPIN,ELKURGAN,CASIMIRO NOTEVI


La franja horaria es GMT +2. Ahora son las 21:22:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi