Ver Mensaje Individual
  #1  
Antiguo 13-01-2012
Chaja Chaja is offline
No confirmado
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 238
Reputación: 0
Chaja Va por buen camino
dbexpress driver does not support the tdbxtypes.unknown data type.

Bueno:
Acudo a Ud. pues no encuentro respuestas. Resulta que estoy migrando de D2007 a XE2, en 2007 saque el BDE y pase todo a DbExpress.
Bien ahi todo bien , pero en XE2 Enterprise tengo el primer problema . En un Store Procedure (uso interbase 7.5), donde pido el numero de comprobante, cuando lo ejecuto me dice
dbexpress driver does not support the tdbxtypes.unknown data type. Vendor....
como si un dato que me devuelve el SP no tenga asignado un tipo de datos, lo cual no es asi ya que cuando se asigna un sp el comp TSQLStoreProc, los carga solo. Al Inspeccionar los Param, veo que tambien me trae, las funciones UDF.... no entiendo?
el SP es este:

Código SQL [-]
CREATE PROCEDURE TRAE_NRO_CPBTE (
    CLASECOMP VARCHAR(2),
    TIPOCOMP VARCHAR(2),
    LETRA_ING VARCHAR(1),
    COMPRAVENTA VARCHAR(1),
    SUCURSAL INTEGER)
RETURNS (
    LETRA VARCHAR(1),
    PREFIJO VARCHAR(4),
    DESGLOZA_IVA VARCHAR(1),
    NUMERO VARCHAR(8),
    VA_LIBRO_IVA VARCHAR(1),
    CLASE_COMPROB VARCHAR(2),
    TIPO_COMPROB VARCHAR(2),
    CON_NUMERACION VARCHAR(1),
    COPIAS INTEGER,
    VA_CTACTE VARCHAR(1),
    IMPRIME VARCHAR(1))
AS
DECLARE VARIABLE ID_CPBTE INTEGER;
DECLARE VARIABLE ID_DESDE INTEGER;
begin
    id_desde=0;
    id_cpbte=0;
    select c.id_comprobante,c.toma_nro_de,c.desgloza_iva,c.afecta_iva,
           c.afecta_cc,C.tipo_comprob,c.clase_comprob, c.copias,
           c.numerarcion_propia,c.imprime from comprobantes c
      where c.sucursal=:sucursal and c.clase_comprob=:clasecomp and c.tipo_comprob=:TIPOCOMP and c.letra=:letra_ing and c.compra_venta=:compraventa
        into :id_cpbte,:id_desde,:desgloza_iva,:va_libro_iva,:va_ctacte,:tipo_comprob,:clase_comprob,:copias,
          :con_numeracion,:IMPRIME;
    if ((id_desde=0)or (id_desde is null)) then
      begin
        select c.letra,c.prefijo,c.numero from comprobantes c
          where c.id_comprobante=:id_cpbte
            into :letra,prefijo,:numero;
         /* insert into test(numero,numero2,codigo, dato)
            values(0,0,'','Tare nro '||:numero);
         */
      end
    else
      begin
        select c.letra,c.prefijo,c.numero from comprobantes c
          where c.id_comprobante=:id_desde
            into :letra,prefijo,:numero;
      end
  /* Procedure Text */
   suspend;
END

y la llamada desde el prog es:

Código Delphi [-]
pROCEDURE TFormTicketVta.UltimoComprobante;
VAR
  Numero: Integer;
BEGIN
  WITH DatosVentasTicket,DMStoreProcedure, FormTicketVta DO
    BEGIN
      BEGIN
        //Traigo la Letra que corresponde segun el tipo de Inscripcion de IVA
        IF (CDSVentaCabLETRAFAC.AsString <> '') AND (CDSVentaCabCLASECPBTE.Value <> '') THEN
          BEGIN
            spNumeroCpbte.Close;
            spNumeroCpbte.ParamByName('Letra_Ing').Value   := CDSVentaCabLETRAFAC.AsString;
            spNumeroCpbte.ParamByName('Sucursal').Value    := CDSVentaCabSucursal.Value;
            spNumeroCpbte.ParamByName('ClaseComp').Value   := CDSVentaCabCLASECPBTE.Value;
            spNumeroCpbte.ParamByName('TipoComp').Value    := CDSVentaCabTIPOCPBTE.AsString;
            spNumeroCpbte.ParamByName('CompraVenta').Value := 'V';
            spNumeroCpbte.ExecProc;
            IF spNumeroCpbte.ParamByName('con_numeracion').AsString <> 'X'THEN
              BEGIN
                IF spNumeroCpbte.ParamByName('prefijo').AsString <> '' THEN
                  Numero := StrToInt(spNumeroCpbte.ParamByName('prefijo').AsString)
                ELSE
                  Numero := 1;
                CDSVentaCabSucFacSetText(CDSVentaCabSucFac,IntToStr(Numero));
                IF spNumeroCpbte.ParamByName('numero').AsString <> '' THEN
                  Numero := StrToInt(spNumeroCpbte.ParamByName('numero').AsString) + 1
                ELSE
                  Numero := 1;
                CDSVentaCabNumeroFacSetText(CDSVentaCabNumeroFac,IntToStr(Numero));
              END;
            CDSVentaCabDESGLOZAIVA.Value       := spNumeroCpbte.ParamByName('desgloza_Iva').AsString;
            CDSVentaCabINGRESA_A_CTACTE.Value  := spNumeroCpbte.ParamByName('Va_CtaCte').AsString;
            CDSVentaCabINGRESA_LIBRO_IVA.Value := spNumeroCpbte.ParamByName('Va_Libro_Iva').AsString;
            CDSVentaCabTIPOCPBTE.Value         := spNumeroCpbte.ParamByName('Tipo_Comprob').AsString;
            CDSVentaCabCLASECPBTE.Value        := spNumeroCpbte.ParamByName('Clase_Comprob').AsString;
            Imprime:= spNumeroCpbte.paramByName('Imprime').AsString;
            spNumeroCpbte.CLose;
          END;
        CDSVentaCabNroCpbte.AsString := CDSVentaCabLetraFac.AsString + CDSVentaCabSucFac.AsString + CDSVentaCabNumeroFac.AsString;
      END;
  END;
END;

lo que no se por que me trae como paramtros las funciones UDF, creo que por ahi es el tema pero no se como hacer para que no las cargue como param.

gracias (por ahora)

Luis Roldan
Mar del Plata
Argentina
Responder Con Cita