Insertar registro en bd de Firebird desde foxpro

Mi buen amigo como estas espero que este bien mi pregunta es como hago un registro directo a la bd de firebird o una consulta osea trabajar directo con la bd

1 respuesta

Respuesta
1

Hola Placido Castano Martinez un placer saludarte. Una vez más.. te felicito por optar por FIREBIRD como nuevo gestor de BD para tus aplicaciones. No te arrepentirás. :)

Para realizar consultas o transacciones a las tablas de la BD en FB, básicamente debemos contar con una conexión estable a dicha base desde nuestra aplicación.

Si has podido establecerla, has de saber que requerimos de un identificador de conexión (que es un numero positivo, según el numero de conexión) para registrar la transacción. Si no has establecido la conexión, avisame para ayudarte.

Pero asumamos que ya tienes la conexión estable y que dicha conexión te regresa el identificador de conexión positivo. Dicho identificador lo podes guardar en una variable publica.. supogamos

PUBLIC Pidenconex

Y así desde cualquier parte, para cualquier transacción tendrás el identificador registrado para tu aplicación. No obstante... es bueno verificar que la conexion sigue activa antes de registrar una consulta o INSERT o UPDATE o DELETE.

Si no has configurado la verificación de conexión.. avisame también para enseñarte como. Mientras la conexión este estable.. el identificador guardara (variable publica) el valor positivo. Si se perdiera la conexión.. al verificar se bloquea el acceso a la BD. Pero eso es otro tema.

Teniendo el identificador en la var public Pidenconex, procedemos asi:

Si hacemos una consulta:

Usamos el comandoSQLEXEC

SQLEXEC(identificador de conexión, "consulta SQL", nombre del "cursor donde caerá la consulta")

Imagina que tenemos la tabla clientes y queremos obtener los clientes todos:

**--

SQLEXEC(Pidenconex, "SELECT * FROM CLIENTES", "tempcur1")

**--Aca ya hacemos uso del cursor de forma normal como en foxpro:

SELECT tempcur1

GO TOP

**--Blah blah blah.. lo que vayas a hacer.

Luego para cerrar el cursor temporal:

IF USED('tempcur1')

        USE IN tempcur1

ENDIF

**--//

El cuerpo de la consulta SELECT * from... es igual que en foxpro.. solo que ya de forma más PURA.. es decir... es SQL ya más propio de si mismo.. es decir.. no le podes aplicar por ejemplo condiciones que son exclusivas de funciones o comandos foxpro. ES con SQL! Para que te orientes mejor como consultar la tabla... ve aquí:

http://msdn.microsoft.com/es-ni/library/cc467240%28v=vs.71%29.aspx 

Ahora.. para insertar, actualizar y eliminar... usamos siempre el comando SQLEXEC() pero con un ligero cambio de parámetros:

**--Insertamos casi igual que en foxpro, anteponiendo un? Al nombre de las variables pero en la sentencia INSERT...

lcCodigo = "1000"

lcNomber = "Cliente 1"

SQLEXEC(Pidenconex, "INSERT INTO CLIENTES(CODIGO, NOMBRE) VALUES(?lcCodigo, ?lcNombre)")

SQLCOMMIT(Pidenconex)

**--//

Para actualizar:

SQLEXEC(Pidenconex, "UPDATE CLIENTES SET CODIGO = ?lcCliente, NOMBRE = ?lcnombre")

SQLCOMMIT(Pidenconex)

**--

Para eliminar:

SQLEXEC(Pidenconex, "DELETE FROM CLIENTES")

SQLCOMMIT(Pidenconex)

**--//

Ahora... esta es una forma DIRECTA de las transacciones. Pero hay otra forma que es super segura y más estable y robusta: usar stored procedures en la base de datos. Con eso.. se garantiza una mejor estabilidad. Yo en lo personal uso por sobre todo SP para realizar INSERT, UPDATE, DELETE... las consultas si las hago a veces de forma directa. Así mismo... el uso de triggers y generadores es una opción realmente excelente para asegurar integridad de registros y hacer que tu aplicación sea más estable. Si quieres... puedes consultarme respecto a estos temas y con gusto podemos hacer una especie de consultas tutorial al respecto par ir viendo paso a paso... desde como crear un STORED PROCEDURE hasta generadores.

Bien... avisame cualquier cosa.

Desde Managua, Nicaragua!

Ravenn :D :D :D

¡Gracias! mil gracias mi buen amigo voy a poner en practica todos tu consejo luego te consulto con cualquier inconveniente. muchos saludo estoy muy agradecido

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas