Archivo .sql en Visual y Firebird

123 views
Skip to first unread message

Manrique Flores

unread,
Oct 15, 2012, 11:03:44 AM10/15/12
to publice...@googlegroups.com
Hola Compañero 
  Tengo una coneccion a una bases de datos Firebird, para poder actualizar bases de datos de firebird por medio de archivo .sql. 

es decir ya tengo el archivo .sql en donde me puede actualizar la tabla en firebird pero ese archivo como la ejecuto desde foxpro. 

o tambien como puedo actualizar la tabla desde Visual pero el comando esta muy grande es este:


UPDATE OR INSERT INTO DOCTOS_VE (DOCTO_VE_ID, TIPO_DOCTO, SUBTIPO_DOCTO, FOLIO, FECHA, CLAVE_CLIENTE, CLIENTE_ID, DIR_CLI_ID, DIR_CONSIG_ID, ALMACEN_ID, MONEDA_ID, TIPO_CAMBIO, TIPO_DSCTO, DSCTO_PCTJE, DSCTO_IMPORTE, ESTATUS, APLICADO, FECHA_VIGENCIA_ENTREGA, ORDEN_COMPRA, FECHA_ORDEN_COMPRA, FOLIO_RECIBO_MERCANCIA, FECHA_RECIBO_MERCANCIA, DESCRIPCION, IMPORTE_NETO, FLETES, OTROS_CARGOS, TOTAL_IMPUESTOS, TOTAL_RETENCIONES, TOTAL_FPGC, PESO_EMBARQUE, FORMA_EMITIDA, CONTABILIZADO, ACREDITAR_CXC, SISTEMA_ORIGEN, COND_PAGO_ID, FECHA_DSCTO_PPAG, PCTJE_DSCTO_PPAG, VENDEDOR_ID, PCTJE_COMIS, VIA_EMBARQUE_ID, IMPORTE_COBRO, DESCRIPCION_COBRO, IMPUESTO_SUSTITUIDO_ID, IMPUESTO_SUSTITUTO_ID, USUARIO_CREADOR, ES_CFD, MODALIDAD_FACTURACION, ENVIADO, FECHA_HORA_ENVIO, EMAIL_ENVIO, CFD_ENVIO_ESPECIAL, CFDI_CERTIFICADO, TIENE_METODO_PAGO, FORMA_COBRO_CC_ID, NUM_CTA_PAGO, FECHA_HORA_CREACION, USUARIO_ULT_MODIF, USUARIO_AUT_CREACION, FECHA_HORA_ULT_MODIF, CARGAR_SUN, USUARIO_AUT_MODIF, USUARIO_CANCELACION, FECHA_HORA_CANCELACION, USUARIO_AUT_CANCELACION)VALUES (3811683, 'R', 'N', '000020900', '2012-09-26', '66', 508906, 508911, 509971, 94759, 94874,13.1392, 'P', 0, 0, 'P', 'S', NULL, '9-9266 25731', '2012-04-26', NULL, NULL, 'Cortado y Ensamblado en (Cut and Assembled in) MEXICO
Hecho en (Made in): USA
Material: Ceramica
Huacales (Crates): 1 Peso (Weight): 1100', 1615, 0, 0, 0, 0, 0, 1100, 'N', 'N', 'N', 'VE', 508904, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL, 'SYSDBA', 'N', NULL, 'N', NULL, NULL, 'N', 'N', 'N', NULL, NULL, '2012-05-02 09:50:05', 'SYSDBA', NULL, '2012-05-03 10:38:12', 'S', NULL, NULL, NULL, NULL)

con el comando SQLEXEC( ) lo ejecuto pero no me arroga ningun error e ingreso a la bases de datos firebird y no aparece nada

Gracias. 

Juan Bonilla

unread,
Oct 15, 2012, 12:25:27 PM10/15/12
to publice...@googlegroups.com
asignale una variable al sqlexec y verifica si te da -1 hay un error,  sy hay error puedes verificarlo con aerror() despues de la instruccion.

x=sqlexec(....)
if x=-1
aerror(zz)
?zz(1,3)
else
?'Bien..'
endif

Walter R. Ojeda Valiente

unread,
Oct 15, 2012, 3:31:31 PM10/15/12
to publice...@googlegroups.com
Nunca intenté ejecutar un archivo .SQL desde el VFP, tendría que investigar si se puede hacer, y como. Normalmente los archivos .SQL se ejecutan desde el programa ISQL o desde algún manejador gráfico, como el EMS SQL Manager.

¿Has verificado que el valor devuelto por la función SQLEXEC() sea mayor que cero? Un valor negativo indica que hubo un error.

¿Has ejecutado un COMMIT después de tu UPDATE OR INSERT? Si no "comiteas", no podrás ver los cambios a tu BD.

Saludos.

Walter.




Date: Mon, 15 Oct 2012 08:03:44 -0700
From: manriqu...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Archivo .sql en Visual y Firebird
--
 
 
 

mapner

unread,
Oct 15, 2012, 4:01:27 PM10/15/12
to publice...@googlegroups.com
Si el comado SQL es grande puedes hacer
 
**********
 
TEXT TO cSQL PRETEXT 7 NOSHOW
 
UPDATE OR INSERT INTO DOCTOS_VE (DOCTO_VE_ID, TIPO_DOCTO, SUBTIPO_DOCTO, FOLIO, FECHA, CLAVE_CLIENTE, CLIENTE_ID, DIR_CLI_ID, DIR_CONSIG_ID, ALMACEN_ID, MONEDA_ID, TIPO_CAMBIO, TIPO_DSCTO, DSCTO_PCTJE, DSCTO_IMPORTE, ESTATUS, APLICADO, FECHA_VIGENCIA_ENTREGA, ORDEN_COMPRA, FECHA_ORDEN_COMPRA, FOLIO_RECIBO_MERCANCIA, FECHA_RECIBO_MERCANCIA, DESCRIPCION, IMPORTE_NETO, FLETES, OTROS_CARGOS, TOTAL_IMPUESTOS, TOTAL_RETENCIONES, TOTAL_FPGC, PESO_EMBARQUE, FORMA_EMITIDA, CONTABILIZADO, ACREDITAR_CXC, SISTEMA_ORIGEN, COND_PAGO_ID, FECHA_DSCTO_PPAG, PCTJE_DSCTO_PPAG, VENDEDOR_ID, PCTJE_COMIS, VIA_EMBARQUE_ID, IMPORTE_COBRO, DESCRIPCION_COBRO, IMPUESTO_SUSTITUIDO_ID, IMPUESTO_SUSTITUTO_ID, USUARIO_CREADOR, ES_CFD, MODALIDAD_FACTURACION, ENVIADO, FECHA_HORA_ENVIO, EMAIL_ENVIO, CFD_ENVIO_ESPECIAL, CFDI_CERTIFICADO, TIENE_METODO_PAGO, FORMA_COBRO_CC_ID, NUM_CTA_PAGO, FECHA_HORA_CREACION, USUARIO_ULT_MODIF, USUARIO_AUT_CREACION, FECHA_HORA_ULT_MODIF, CARGAR_SUN, USUARIO_AUT_MODIF, USUARIO_CANCELACION, FECHA_HORA_CANCELACION, USUARIO_AUT_CANCELACION)VALUES (3811683, 'R', 'N', '000020900', '2012-09-26', '66', 508906, 508911, 509971, 94759, 94874,13.1392, 'P', 0, 0, 'P', 'S', NULL, '9-9266 25731', '2012-04-26', NULL, NULL, 'Cortado y Ensamblado en (Cut and Assembled in) MEXICO
Hecho en (Made in): USA
Material: Ceramica
Huacales (Crates): 1 Peso (Weight): 1100', 1615, 0, 0, 0, 0, 0, 1100, 'N', 'N', 'N', 'VE', 508904, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL, 'SYSDBA', 'N', NULL, 'N', NULL, NULL, 'N', 'N', 'N', NULL, NULL, '2012-05-02 09:50:05', 'SYSDBA', NULL, '2012-05-03 10:38:12', 'S', NULL, NULL, NULL, NULL)
 
ENDTEXT
 
nCon = SQLSTRINGCONNECT(... string de conexion ...) 
nRet = SQLEXEC(nCon,cSQL)
IF nRet < 0
  AERROR(aODBCError)
  MESSAGEBOX(aODBCError[2])
ELSE
 MESSAGEBOX('Ejecución Correcta')
ENDIF
 
***********************
 
El comando SQLEXEC no arroja error de por si, sino que lo debes capturar mediante el valor devuelto y la función AERROR
 
saludos

Manrique Flores

unread,
Oct 16, 2012, 9:50:09 AM10/16/12
to publice...@googlegroups.com
Voy a tratar de aplicar estos consejos y les comento los resultados en unos momentos mas....

Manrique Flores

unread,
Oct 18, 2012, 9:15:26 AM10/18/12
to publice...@googlegroups.com
compañeros ya realice todos los consejos que me comentaron pero aun asi me manda error, asumo como el UPDATE es muy grande pues no lo realice y si al mandar el SQLEXEC el resultado es un error.


alguna otra forma de poder ejecutar este update de Visual a Firebird

Gracias.

mapner

unread,
Oct 18, 2012, 10:41:55 AM10/18/12
to publice...@googlegroups.com
Estimado,

lo primero que debes analizar es que error te está devolviendo. Si lo capturas con AERROR y analizas el mensaje te resultaría más facil actuar en consecuencia.
Otra sugerencia con sentencias SQL grandes o complejas es que primero la pruebes en algún administrador de Firebird como ser IBEXPERT (www.ibexpert.com) o IBOConsole (http://www.mengoni.it/Downloads/) o similar. Estos administradores por lo general te analizan al expresión y te maran si exsite un error de sintaxis. A su vez puedes hacer un "plan analizer" para verificar si el uso de indices es optimo,etc.. recién cuando tu sentecia SQL esta probada la trasladas a VFP.

saludos

Walter R. Ojeda Valiente

unread,
Oct 18, 2012, 5:08:48 PM10/18/12
to publice...@googlegroups.com
¿Has probado ejecutar el UPDATE en un administrador gráfico como el EMS SQL Manager?

Si hay algún error, allí saltará.

Las variables de tipo caracter de VFP pueden contener hasta 255 caracteres (si la memoria no me falla) cuando se hacen las asignaciones con = o con STORE. Pero pueden contener muchísimos más caracteres si utilizas la construcción TEXT ... ENDTEXT.

Si hay un error, deberías usar la función AERROR() para conocer más sobre dicho error.

Saludos.

Walter.




Date: Thu, 18 Oct 2012 06:15:26 -0700
From: manriqu...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Re: Archivo .sql en Visual y Firebird


compañeros ya realice todos los consejos que me comentaron pero aun asi me manda error, asumo como el UPDATE es muy grande pues no lo realice y si al mandar el SQLEXEC el resultado es un error.


alguna otra forma de poder ejecutar este update de Visual a Firebird

Gracias.


--
 
 
 
Reply all
Reply to author
Forward
0 new messages