Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-12-2008
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 656
Poder: 17
look Va camino a la fama
Ayuda con Consulta, Declarar Variables

Hola amigos, tengo la siguiente consulta en SQL, esta me trabaja muy bien en MSSQL, pero me gustaria Pasarla a Firebird.
Código Delphi [-]
Q_CxC.SQL.Text:=' DECLARE @num_regs int; set @num_regs=( select num_regs from CU0N01 )+1 ; '+
'insert into cuen01 (NUM_REG,CCLIE,STATUS,TIPO_MOV,NO_FACTURA,DOCTO,REFER,IMPORTE,FECHA_APLI,FECHA_VENC,COB,AFEC_COI,OBS  _CXCCXP,BANK_COM,STRCVEVEND,NUM_MONED,TCAMBIO,IMPMON_EXT,CCONREFER,FECHAELAB,USUARIO,CTLPOL) '
+'Values(@num_regs'+','+QuotedStr(FORM2.showcli.Text)+','+QuotedStr('A')+',1,'+QuotedStr(NF)+','+Quo  tedStr(NV)+','+QuotedStr(NV)
+','+FormatFloat('0.####',form2.tot.Value*FORM2.MONEDA.FieldBYNAME('TCAMBIO').asfloat)+','+QuotedStr  (FORM2.Edit1.Text)+','+QuotedStr(FORM2.Edit1.Text)
+','+QuotedStr(USR2)+','+QuotedStr('A')+',0,0,'+QuotedStr(CVVD)+','+QuotedStr(FORM2.numo.Text)+','+F  ormatFloat('0.####',FORM2.moneda.FieldBYNAME('TCAMBIO').asfloat)+','+FormatFloat('0.####',form2.tot.  Value*FORM2.moneda.FieldBYNAME('TCAMBIO').asfloat)
+','+QuotedStr('N')+','+QuotedStr(FORM2.Edit1.Text)+','+FORM13.Table1.FieldBYNAME('USSAAE').Text+',0  )'
+'update CU0N01 set num_regs=@num_regs ';
Q_CxC.ExecSQL;

me da problema aqui:

Código SQL [-]
DECLARE @num_regs int; set @num_regs=( select num_regs from CU0N01 )+1 ; '+

el problema es que firebird no trabaja de esta manera, obviamente!...
me gustaria que me echaran una manito si!.
__________________
all your base are belong to us
Responder Con Cita
  #2  
Antiguo 02-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No se por que pero los punto y coma me dan mala espina.
Por que no pasas los datos con parametros y lo pruebas en el generador de consultas?.
Este te podria decir que esta mal, asi lo hice una vez y sirve de mucho, por lo menos se aprende de firebird y como funciona.
Lo que si se es que los parametros lo entienden todos.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 02-12-2008
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola.

En firebird deberias crear un procedimiento almacenado, puesto que sólo puedes definir variables en un procedimiento o en un disparador.

Código SQL [-]
SET TERM !! ;
CREATE OR ALTER PROCEDURE PR_prueba (
/* Parámetros de entrada */
PARCCLIE INTEGER, 
PARSTATUS CHAR(1), 
PARTIPOMOV INTEGER,
PARAMETRONF , /* el resto de tipos de datos no lo escribo  */
PARNUM_REG, 
PARCCLIE, 
PARSTATUS, 
PARTIPO_MOV, 
PARNO_FACTURA, 
PARDOCTO, 
PARREFER, 
PARIMPORTE, 
PARFECHA_APLI, 
PARFECHA_VENC, 
PARCOB, 
PARAFEC_COI, 
PAROBS_CXCCXP, 
PARBANK_COM, 
PARSTRCVEVEND, 
PARNUM_MONED, 
PARTCAMBIO, 
PARIMPMON_EXT, 
PARCCONREFER, 
PARFECHAELAB, 
PARUSUARIO, 
PARCTLPOL)
AS
DECLARE VARIABLE num_regs int; 
BEGIN
  select num_regs from CU0N01 INTO :num_regs;

  num_regs = num_regs +1;

  insert into cuen01 (NUM_REG, CCLIE, STATUS, TIPO_MOV, NO_FACTURA, DOCTO, REFER, IMPORTE, FECHA_APLI, FECHA_VENC, COB, AFEC_COI,
OBS _CXCCXP, BANK_COM, STRCVEVEND, NUM_MONED, TCAMBIO, IMPMON_EXT, CCONREFER, FECHAELAB, USUARIO, CTLPOL) 
  Values(:num_regs, :PARCCLIE, :PARSTATUS, :PARTIPOMOV,:PARAMETRONF,
:PARNUM_REG, :PARCCLIE, :PARSTATUS, :PARTIPO_MOV, :PARNO_FACTURA, :PARDOCTO, :PARREFER, :PARIMPORTE, 
:PARFECHA_APLI, :PARFECHA_VENC, :PARCOB, :PARAFEC_COI, :PAROBS_CXCCXP, 
:PARBANK_COM, :PARSTRCVEVEND, :PARNUM_MONED, :PARTCAMBIO, :PARIMPMON_EXT, 
:PARCCONREFER, :PARFECHAELAB, :PARUSUARIO, :PARCTLPOL);

  update CU0N01 
  set num_regs = :num_regs;

END
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...

Última edición por defcon1_es fecha: 02-12-2008 a las 13:54:18.
Responder Con Cita
  #4  
Antiguo 02-12-2008
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 656
Poder: 17
look Va camino a la fama
Cita:
Empezado por defcon1_es Ver Mensaje
Hola.

En firebird deberias crear un procedimiento almacenado, puesto que sólo puedes definir variables en un procedimiento o en un disparador.

Código SQL [-]SET TERM !! ; CREATE OR ALTER PROCEDURE PR_prueba ( /* Parámetros de entrada */ PARCCLIE INTEGER, PARSTATUS CHAR(1), PARTIPOMOV INTEGER, PARAMETRONF , /* el resto de tipos de datos no lo escribo */ PARNUM_REG, PARCCLIE, PARSTATUS, PARTIPO_MOV, PARNO_FACTURA, PARDOCTO, PARREFER, PARIMPORTE, PARFECHA_APLI, PARFECHA_VENC, PARCOB, PARAFEC_COI, PAROBS_CXCCXP, PARBANK_COM, PARSTRCVEVEND, PARNUM_MONED, PARTCAMBIO, PARIMPMON_EXT, PARCCONREFER, PARFECHAELAB, PARUSUARIO, PARCTLPOL) AS DECLARE VARIABLE num_regs int; BEGIN select num_regs from CU0N01 INTO :num_regs; num_regs = num_regs +1; insert into cuen01 (NUM_REG, CCLIE, STATUS, TIPO_MOV, NO_FACTURA, DOCTO, REFER, IMPORTE, FECHA_APLI, FECHA_VENC, COB, AFEC_COI, OBS _CXCCXP, BANK_COM, STRCVEVEND, NUM_MONED, TCAMBIO, IMPMON_EXT, CCONREFER, FECHAELAB, USUARIO, CTLPOL) Values(:num_regs, :PARCCLIE, :PARSTATUS, :PARTIPOMOV,:PARAMETRONF, :PARNUM_REG, :PARCCLIE, :PARSTATUS, :PARTIPO_MOV, :PARNO_FACTURA, :PARDOCTO, :PARREFER, :PARIMPORTE, :PARFECHA_APLI, :PARFECHA_VENC, :PARCOB, :PARAFEC_COI, :PAROBS_CXCCXP, :PARBANK_COM, :PARSTRCVEVEND, :PARNUM_MONED, :PARTCAMBIO, :PARIMPMON_EXT, :PARCCONREFER, :PARFECHAELAB, :PARUSUARIO, :PARCTLPOL); update CU0N01 set num_regs = :num_regs; END
Gracias Amigo... esto es lo que necesitaba...
__________________
all your base are belong to us
Responder Con Cita
Respuesta



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
declarar variables globales mcnudi Impresión 8 08-11-2006 12:43:51
Problema en consulta SQL con variables y format ilichhernandez SQL 6 14-11-2005 20:08:54
Declarar variables Locales en Delphi?? JELIRM Varios 6 09-07-2005 01:22:54
Como declarar variables para que las puedan utilizar otras units erocha Varios 1 07-11-2003 22:21:27


La franja horaria es GMT +2. Ahora son las 10:02:06.


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