PDA

Ver la Versión Completa : dbexpress driver does not support the tdbxtypes.unknown data type.


Chaja
13-01-2012, 04:33:39
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:


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:


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