Ver Mensaje Individual
  #3  
Antiguo 09-06-2011
Chaja Chaja is offline
No confirmado
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 238
Reputación: 0
Chaja Va por buen camino
Estimado:
mi inquietud es la siguiente, estoy sacando el BDE de mi aplicacion, lo que me esta llevando bastante trabajo , son mas de 500 querys y mas de 100 store. Mi Tema es: que en algunos SP tenia como resultado (BD de Dato Interbase) un Caracter el cual me trae S o N o una letra.
Desde el lado del componete esa variable me vuelve vacia null , en al gunos casos me trae el valor, pero en otros no.
Misma consulta mismo datos, pero distintos servidores. por ejemplo en el cliente , con los datos del cliente hago la consulta y me trae el valor de ESTADO en S o N, en otro cliente otra base no lo hace. Lo hago por el IBExpert si la consulta esta bien y lo esta , ya que el sp siempre me devuelve un registro con datos. Siempre que hay una devolucion de un caracter y no me lee nada, el campo en el sp lo define como CHAR (1) y luego con VARCHAR, pero no hubo cambios. Los comp, que uso ahora son los DBX. Alguna idea???
anexo el Sp

Código SQL [-]CREATE PROCEDURE TOTAL_PAGOS_MENSUAL_PROVEEDORES ( CODIGO VARCHAR(6), FECHA DATE) RETURNS ( TOTAL NUMERIC(15,3), EXENTO VARCHAR(1), CODIGO_REGIMEN INTEGER, PAGOS_ANTERIORES NUMERIC(15,3), CONCEPTO CHAR(25), MINIMO_NO_IMPONIBLE NUMERIC(15,3), TASA NUMERIC(15,3), IMPUESTO_MINIMO NUMERIC(15,3), EXENTO_ID INTEGER) AS DECLARE VARIABLE PAGOS_ANTERIORES_AUX NUMERIC(15,3); DECLARE VARIABLE ANULACIONES NUMERIC(15,3); begin /* Busco el proveedor si es exento a las ganacias y el codigo de retencion*/ select p.exento_ganacia,p.codigo_regimen_ret_ganacia from poveedor p where p.codigo=:codigo into :exento,:codigo_regimen; if (exento='N') then begin select Sum(op.total_neto_gravado) from ordenpago op where extract( month from op.fecha)= extract (month from :fecha) and extract (year from op.fecha)=extract (year from :fecha) and op.codigo=:codigo into :total; if (total is null) then total=0; select t.alicuota,t.minimo_no_imponible,t.concepto,t.impuesto_minimo from tasas_ret_ganancia t where t.codigo=:codigo_regimen into :tasa,:minimo_no_imponible,:concepto,:impuesto_minimo; /*Sumo los pagos de las retenciones aneriores */ select Sum(ret.impuesto_retenido) from retenciones_ganancia ret where extract(month from ret.fecha)=extract (month from :fecha) and extract (year from ret.fecha)=extract (year from :fecha) and ret.codigo_proveedor=:codigo into agos_anteriores; if (pagos_anteriores is null) then pagos_anteriores=0; /*************************/ /*Sumo las Anulaciones */ anulaciones=0; pagos_anteriores_aux=0; select Sum(a_ret.impuesto_retenido) from anulacion_retenciones_ganancia a_ret where extract(month from a_ret.fecha)=extract (month from :fecha) and extract (year from a_ret.fecha)=extract (year from :fecha) and a_ret.codigo_proveedor=:codigo into :anulaciones; if (anulaciones is null) then anulaciones=0; /***************************/ pagos_anteriores_aux=agos_anteriores-:anulaciones; pagos_anteriores=agos_anteriores_aux; end else begin tasa =0; concepto =''; minimo_no_imponible=0; exento ='S'; pagos_anteriores =0; impuesto_minimo =0; end if (exento = 'N') Then begin exento_id=0; end else begin exento_id = 1; end /* Procedure Text */ /*suspend;*/ end


y como lo llamo desde la aplicacion
Código Delphi [-] if DMMain_2.AgenteRetencionGanacia='S' Then begin QTraer_Pagos_Proveedor.Close; QTraer_Pagos_Proveedor.ParamByName('CODIGO').AsString := Dato; QTraer_Pagos_Proveedor.ParamByName('Fecha').AsDate := CDSOPagoFECHA.AsDateTime; QTraer_Pagos_Proveedor.Open;//ExecProc; if (QTraer_Pagos_ProveedorEXENTO.AsVariant='N') or (QTraer_Pagos_ProveedorEXENTO.AsString='N') or (QTraer_Pagos_ProveedorEXENTO.AsWideString='N') or (QTraer_Pagos_ProveedorEXENTO_ID.Value=0) Then CDSOPagoRETIENE_GANACIAS.Value:='S' else CDSOPagoRETIENE_GANACIAS.Value:='N'; if CDSOPagoTIPOIVA.Value<>1 Then CDSOPagoRETIENE_GANACIAS.Value:='N'; if CDSOPagoRETIENE_GANACIAS.Value='S' Then begin // este es el Total de netos gravados del mes CDSOPagoTOTAL_PAGOS_DEL_MES.AsFloat := QTraer_Pagos_ProveedorTOTAL.AsFloat; // total de impuestos pagados CDSOPagoTOTAL_RETENIDO_MES.AsFloat := QTraer_Pagos_ProveedorPAGOS_ANTERIORES.AsFloat; CDSOPagoTASA_RETENCION_GANACIA.AsFloat := QTraer_Pagos_ProveedorTASA.AsFloat; CDSOPagoMINIMO_NO_IMPONIBLE_GANANCIA.AsFloat := QTraer_Pagos_ProveedorMINIMO_NO_IMPONIBLE.AsFloat; CDSOPagoCODIGO_REGIMENA_GANANCIA.Value := QTraer_Pagos_ProveedorCODIGO_REGIMEN.AsInteger; CDSOPagoCONCEPTO_RETENCION_GANACIA.Value := QTraer_Pagos_ProveedorCONCEPTO.AsString; CDSOPagoIMPUESTO_MINIMO_GANANCIA.AsFloat := QTraer_Pagos_ProveedorIMPUESTO_MINIMO.AsFloat; end; QTraer_Pagos_Proveedor.Close; end;


Gracias y perdon por la falta de ortografia, me pasa por apurado
Responder Con Cita