Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-05-2019
Saul Rivera Saul Rivera is offline
Miembro
 
Registrado: abr 2019
Posts: 16
Poder: 0
Saul Rivera Va por buen camino
delphi7 null into type integer

Hola tengo un problema al insertar datos a una tabla en sql los campos son enteros pero al momento de ingresar me tira un error que dice: could not Convert variant od type null into type integer.
Tengo 3 TcxLookupComboBox

1 = codigo de proveedor
2 = codigo de orden de trabajo
3 codigo de proyecto


entre el 2 y 3 hay una excepción si quiero agregar la orden de trabajo no agrego el codigo de proyecto y viceversa

pero se guardan esos 3 datos cuando hago el insert si me pueden ayudar con esto lo agradeceria


los 3 combobox estan asociados a un dataSourse y los dataSourse a un dataset


Saludos
Responder Con Cita
  #2  
Antiguo 08-05-2019
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Bueno yo lo que haría sería esto:

Deberías tener un "código de proyecto" igual a 0 con una descripción que dijera "Sin código de proyecto" o alguna otra descripción...(o ya lo tienes definido?), si no lo tienes definido, sería esta la solución. Cuando el valor de TcxLookUpComboBox, sea igual a 0, le envías este valor como parámetro al SQL y que lo almacene en tu base de datos.

(Seria mucho mejor si enviaras algo de código)

Algo así seria la idea....

Espero te sirva.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 08-05-2019 a las 22:04:03.
Responder Con Cita
  #3  
Antiguo 08-05-2019
Saul Rivera Saul Rivera is offline
Miembro
 
Registrado: abr 2019
Posts: 16
Poder: 0
Saul Rivera Va por buen camino
Post

mRoman gracias por responder, las tres lineas de otro color son las que tengo para capturar esos datos
este es el codigo de mi boton guardar
Código Delphi [-]
procedure TfrmRequisicion.ActSaveExecute(Sender: TObject);
begin

  try
    dmMain2.tblRequisicionHdr.FieldByName('USUARIO').AsString := Usuario;
    dmMain2.tblRequisicionHdr.FieldByName('POR_COBRAR').AsBoolean := ckPorCobrar.Checked;
    dmMain2.tblRequisicionHdr.Post;
  except
      on e: Exception do

      end;

  dnData.Buttons.Post.Click;
  dmMain2.muInsertarRequisicion.ParamByName('NUM_REQUISICION').AsInteger := dmMain2.tblRequisicionHdr.FieldByName('NUM_REQUISICION').AsInteger;
  dmMain2.muInsertarRequisicion.ParamByName('POR_COBRAR').AsBoolean := ckPorCobrar.Checked;
  dmMain2.muInsertarRequisicion.ParamByName('COD_PROVEEDOR').AsString := cblProveedores.EditValue;
  dmMain2.muInsertarRequisicion.ParamByName('NUM_OT_TRABAJO').AsInteger := cblOrdenTrabajo.EditValue;
  dmMain2.muInsertarRequisicion.ParamByName('ID_PROYECTO').AsInteger := cblProyectos.EditValue;
  end;
  dmMain2.muInsertarRequisicion.Open;
  dmMain2.muInsertarRequisicion.Close;


  btnSave.Enabled := False;
  btnNew.Enabled := True;

  gbDatos.Enabled := False;
  dnData.Enabled := False;
  gvData.Enabled := False;
  DisplayReport(dmMain2.tblRequisicionHdr.FieldByName('NUM_REQUISICION').AsString);
  dmMain2.tblRequisicionHdr.Filtered := False;
end;
en mi dataset tengo este codigo para guardar esas lineas
Código SQL [-]
UPDATE  INV_REQUISICION_HDR 
SET POR_COBRAR = :POR_COBRAR, 
COD_PROVEEDOR = :COD_PROVEEDOR, 
NUM_OT_TRABAJO = :NUM_OT_TRABAJO, 
ID_PROYECTO = :ID_PROYECTO
WHERE NUM_REQUISICION = :NUM_REQUISICION

Última edición por Casimiro Notevi fecha: 09-05-2019 a las 01:42:18.
Responder Con Cita
  #4  
Antiguo 09-05-2019
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Que base de datos usas?
Como tienes definido tu campo? (NOT NULL)
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #5  
Antiguo 09-05-2019
Saul Rivera Saul Rivera is offline
Miembro
 
Registrado: abr 2019
Posts: 16
Poder: 0
Saul Rivera Va por buen camino
sql server

si permite null
porque puede llevar asignado o no esos campos al guardar la requisiscion
Responder Con Cita
  #6  
Antiguo 09-05-2019
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Bueno Saúl, mira no manejo SQL Server, soy mas de Firebird, pero considero puede aplicar para tu DBMS ya q jugaré un poco con la lógica a reserva de que alguien mas de una mejor opción.

Agregaría unos CheckBox en cada Combo, los cuales pudieran estar a un costado del Combo (TcxLookupComboBox) que me servirán para usarlos en un IF dentro de tu siguiente código:

Código Delphi [-]
 
  dnData.Buttons.Post.Click;
  dmMain2.muInsertarRequisicion.ParamByName('NUM_REQUISICION').AsInteger := 
  dmMain2.tblRequisicionHdr.FieldByName('NUM_REQUISICION').AsInteger;
  dmMain2.muInsertarRequisicion.ParamByName('POR_COBRAR').AsBoolean := ckPorCobrar.Checked;
  dmMain2.muInsertarRequisicion.ParamByName('COD_PROVEEDOR').AsString := cblProveedores.EditValue;
  if (cBoxOrdenTrab.Checked) and not(cBoxProyecto.Checked) then
  begin
        dmMain2.muInsertarRequisicion.ParamByName('NUM_OT_TRABAJO').AsInteger := cblOrdenTrabajo.EditValue;
        dmMain2.muInsertarRequisicion.ParamByName('ID_PROYECTO').AsInteger :=null; 
  end Else
  begin
       if not(cBoxOrdenTrab.Checked) and (cBoxProyecto.Checked) then
       begin
           dmMain2.muInsertarRequisicion.ParamByName('NUM_OT_TRABAJO').AsInteger :=null;
           dmMain2.muInsertarRequisicion.ParamByName('ID_PROYECTO').AsInteger:=cblProyectos.EditValue;
       end Else
       begin
            if (cBoxOrdenTrab.Checked) and (cBoxProyecto.Checked) then
           begin
                dmMain2.muInsertarRequisicion.ParamByName('NUM_OT_TRABAJO').AsInteger := cblOrdenTrabajo.EditValue;
                dmMain2.muInsertarRequisicion.ParamByName('ID_PROYECTO').AsInteger := cblProyectos.EditValue;
           end Else
           begin
                Application.MessageBox('Error, debes seleccionar una Orden de Trabajo o Proyecto','Aviso', mb_ok+mb_IconError);
           end; 
       end;
  end;
  dmMain2.muInsertarRequisicion.Open;
  dmMain2.muInsertarRequisicion.Close;

  btnSave.Enabled := False;
  btnNew.Enabled := True;

  gbDatos.Enabled := False;
  dnData.Enabled := False;
  gvData.Enabled := False;
  DisplayReport(dmMain2.tblRequisicionHdr.FieldByName('NUM_REQUISICION').AsString);
  dmMain2.tblRequisicionHdr.Filtered := False;


A este código le veo un problema...deberás encontrar la forma de que NO SE EJECUTE este código:
Código Delphi [-]
  dmMain2.muInsertarRequisicion.Open;
  dmMain2.muInsertarRequisicion.Close;

  btnSave.Enabled := False;
  btnNew.Enabled := True;

  gbDatos.Enabled := False;
  dnData.Enabled := False;
  gvData.Enabled := False;
  DisplayReport(dmMain2.tblRequisicionHdr.FieldByName('NUM_REQUISICION').AsString);
  dmMain2.tblRequisicionHdr.Filtered := False;

Cuando entre y se ejecute esta linea:
Código Delphi [-]
                Application.MessageBox('Error, debes seleccionar una Orden de Trabajo o Proyecto','Aviso', mb_ok+mb_IconError);

Ya que posterior a esta, se abrira/cerrara el DataSet y se ejecutara todo lo demás.
Código Delphi [-]
dmMain2.muInsertarRequisicion.Open;
dmMain2.muInsertarRequisicion.Close;

Bueno espero te sirva...lo hice sin tener Delphi a la mano. Ya nos dirás como te fue.

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 09-05-2019 a las 21:12:59.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
could not convert variant of type (null) into type (string) The Cid James Varios 5 14-11-2017 20:55:03
could not convert variant of type (null) into type (string) davidmedina29 Varios 10 18-02-2016 13:00:56
&Type: Byte; a Delphi7 fcios Varios 4 01-05-2013 18:56:57
Could not convert variant of type (Null) into type (Integer) Alejo15x Varios 2 30-11-2010 17:35:50
Consulta SQL campo integer null mjjj SQL 1 11-07-2008 22:12:00


La franja horaria es GMT +2. Ahora son las 20:24:15.


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