tengo inconvenientes con un form que se llama frm_datosegreso
dentro del form tengo 4 DBLookupComboBox, cada uno esta conectado con un datasource con su respectivo query, todos los datos deben ser obligatorios, cuando no lleno ningun campo me sale una falla Could not convert variant of type (Null) into type (Integer).
que puedo hacer para cuando no se llene ningun dato me salga un mensaje en vez de ese error???
este es el codigo que tengo dentro del form
unit Frm_DatosEgreso; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, AdvGlowButton, ExtCtrls, Mask, DBCtrls, StdCtrls, Buttons, DB, IBCustomDataSet, IBQuery,u_HistoriasClinicas,dm_NotaIngreso; type TFrmDatosEgreso = class(TForm) GBoxDatosEgresoUrgencia: TGroupBox; Label21: TLabel; Panel1: TPanel; AdvGlowButton1: TAdvGlowButton; AdvGlowButton2: TAdvGlowButton; DsMotivoEgreso: TDataSource; DsDestinoPaciente: TDataSource; DsEstadoSalida: TDataSource; DsDestino3047: TDataSource; DsDxSalida: TDataSource; q_Motivo: TIBQuery; q_Destino: TIBQuery; q_EstadoSalida: TIBQuery; q_Destino3047: TIBQuery; q_DxSalida: TIBQuery; DsNuevoDestino3047: TDataSource; DsNuevaSalida: TDataSource; DsNuevoDestino: TDataSource; DSHistoria: TDataSource; dsHist: TDataSource; DBEdit16: TDBEdit; Label12: TLabel; DBLookupComboBox5: TDBLookupComboBox; Label6: TLabel; DBLookupComboBox4: TDBLookupComboBox; Label4: TLabel; DBLookupComboBox3: TDBLookupComboBox; Label51: TLabel; DBLookupComboBox1: TDBLookupComboBox; Label19: TLabel; BtnBuscarDxSalida: TSpeedButton; BtnBorrarDxSalida: TSpeedButton; procedure BtnBuscarMotivoEgresoClick(Sender: TObject); procedure BtnBorrarMotivoEgresoClick(Sender: TObject); procedure BtnBuscarDestinoClick(Sender: TObject); procedure BtnBuscarEstadoSalidaClick(Sender: TObject); procedure BtnBuscarDestino3047Click(Sender: TObject); procedure BtnBuscarDxSalidaClick(Sender: TObject); procedure BtnBorrarDestinoClick(Sender: TObject); procedure BtnBorrarEstadoSalidaClick(Sender: TObject); procedure BtnBorrarDestino3047Click(Sender: TObject); procedure BtnBorrarDxSalidaClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); private { Private declarations } Retorno : TDatosEgreso; Fdm : TdmNotaIngreso; procedure LimpiarRegistro(Const Cueri : TIBQuery); procedure UbicarRegistro(Const Cueri : TIBQuery; Const Registro : Integer); public { Public declarations } end; function AsignarDatosDeEgresoDelPaciente(Var RegActuales : TDatosEgreso) : Boolean; var FrmDatosEgreso: TFrmDatosEgreso; implementation uses Frm_SearchIB, Dm_Data; {$R *.dfm} function AsignarDatosDeEgresoDelPaciente(Var RegActuales : TDatosEgreso) : Boolean; var Frm : TFrmDatosEgreso; Fdm : TdmNotaIngreso; begin Result := False; Frm := TFrmDatosEgreso.create(nil); Fdm := TdmNotaIngreso.Create(nil); try //REQ 3988 frm.dsHist.DataSet := Fdm.t_Historia; Fdm.t_historia.Open; frm.DSHistoria.DataSet := Fdm.q_Egreso; Fdm.q_Egreso.Open; frm.DsNuevoDestino.DataSet := Fdm.q_NuevoDestino; Fdm.q_NuevoDestino.Open; frm.DsNuevaSalida.DataSet := Fdm.q_NuevoEsSalida; Fdm.q_NuevoEsSalida.Open; frm.DsNuevoDestino3047.DataSet := Fdm.q_NuevoDestino3047; Fdm.q_NuevoDestino3047.Open; // Frm.UbicarRegistro(Fdm.q_Egreso,RegActuales.MotivoEgreso); //Frm.UbicarRegistro(Fdm.q_NuevoDestino,RegActuales.DestinoEgreso); // Frm.UbicarRegistro(Fdm.q_NuevoEsSalida,RegActuales.EstadoEgreso); //frm.UbicarRegistro(Fdm.q_NuevoDestino3047,RegActuales.Destino3047Egreso); Frm.UbicarRegistro(Frm.q_DxSalida,RegActuales.DxEgreso); Frm.ShowModal; if Frm.ModalResult = mrOk then begin RegActuales.MotivoEgreso := Frm.DBLookupComboBox1.KeyValue ; // Frm.q_Motivo.Fields[0].AsInteger; RegActuales.DestinoEgreso:= Frm.DBLookupComboBox3.KeyValue ; //Frm.q_Destino.Fields[0].AsInteger; RegActuales.EstadoEgreso := Frm.DBLookupComboBox4.KeyValue; //Frm.q_EstadoSalida.Fields[0].AsInteger; RegActuales.Destino3047Egreso := Frm.DBLookupComboBox5.KeyValue; //Frm.q_Destino3047.Fields[0].AsInteger; RegActuales.DxEgreso := Frm.q_DxSalida.Fields[0].AsInteger; // lo Comentado valida los registros por buscadores Result := True; end; finally Frm.Free; Fdm.Free; end; end; procedure TFrmDatosEgreso.BtnBuscarMotivoEgresoClick(Sender: TObject); var Registro : integer; begin Registro := BuscarIb(Fdm.q_Egreso.Transaction,'MOTIVO_EGRESO','COD_MOTIVO','DES_MOTIVO','ID_MOTIVO'); if Registro > 0 then UbicarRegistro(Fdm.q_Egreso,Registro); end; procedure TFrmDatosEgreso.UbicarRegistro(const Cueri: TIBQuery; const Registro: Integer); begin Cueri.Close; Cueri.Params[0].AsInteger := Registro; Cueri.Open; end; procedure TFrmDatosEgreso.BtnBorrarMotivoEgresoClick(Sender: TObject); begin LimpiarRegistro(Fdm.q_Egreso); end; procedure TFrmDatosEgreso.BtnBuscarDestinoClick(Sender: TObject); var Registro : integer; begin Registro := BuscarIb(Fdm.q_NuevoDestino.Transaction,'DESTINO_SALIDA','COD_DESTINO_SALIDA','DES_DESTINO_SALIDA','ID_DESTINO_SALIDA'); if Registro > 0 then UbicarRegistro(Fdm.q_NuevoDestino,Registro); end; procedure TFrmDatosEgreso.BtnBuscarEstadoSalidaClick(Sender: TObject); var Registro : integer; begin Registro := BuscarIb(Fdm.q_NuevoEsSalida.Transaction,'ESTADO_SALIDA','COD_ESTADO_SALIDA','DES_ESTADO_SALIDA','ID_ESTADO_SALIDA'); if Registro > 0 then UbicarRegistro(Fdm.q_NuevoEsSalida,Registro); end; procedure TFrmDatosEgreso.BtnBuscarDestino3047Click(Sender: TObject); var Registro : integer; begin Registro := BuscarIb(Fdm.q_NuevoDestino3047.Transaction,'TBL_DESTINO_3047','CODIGO','DESCRIPCION','ID_DESTINO_3047'); if Registro > 0 then UbicarRegistro(Fdm.q_NuevoDestino3047,Registro); end; procedure TFrmDatosEgreso.BtnBuscarDxSalidaClick(Sender: TObject); var Registro : integer; begin Registro := BuscarIb(q_DxSalida.Transaction,'Cie9_DetRips','Cod_Cie9','Des_Cie9','Id_Cie9'); if Registro > 0 then UbicarRegistro(q_DxSalida,Registro); end; procedure TFrmDatosEgreso.LimpiarRegistro(const Cueri: TIBQuery); begin Cueri.Close; end; procedure TFrmDatosEgreso.BtnBorrarDestinoClick(Sender: TObject); begin LimpiarRegistro(Fdm.q_NuevoDestino); end; procedure TFrmDatosEgreso.BtnBorrarEstadoSalidaClick(Sender: TObject); begin LimpiarRegistro(Fdm.q_NuevoEsSalida); end; procedure TFrmDatosEgreso.BtnBorrarDestino3047Click(Sender: TObject); begin LimpiarRegistro(Fdm.q_NuevoDestino3047); end; procedure TFrmDatosEgreso.BtnBorrarDxSalidaClick(Sender: TObject); begin LimpiarRegistro(q_DxSalida); end; procedure TFrmDatosEgreso.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := cafree; end; procedure TFrmDatosEgreso.FormDestroy(Sender: TObject); begin FrmDatosEgreso := nil; end; end.