Ir al contenido


Foto

Programacion con DBMS SQL y DELPHI


  • Por favor identifícate para responder
1 respuesta en este tema

#1 Pollo2004

Pollo2004

    Member

  • Miembros
  • PipPip
  • 18 mensajes
  • LocationArgentina

Escrito 05 enero 2009 - 04:07

Hola a todos, me gustaria aclarar como es esto de usar estas tres herramientas juntas (DBMS, SQL y DELPHI).

Bueno a mi entender con los DBMS creo las bases de datos, le doy sus propiedades, etc, etc.
Aca mi primer pregunta lo triggers, son como condiciones q se ejecutan al resultado de lo q pasa cuando se carga un dato? Como hago para q se ejecuten cuando conecto y uso la bases de datos con delphi? Las consultas en lenguaje SQL donde debo colocarlas.
Si alguien me aclara este enrriedo se los agradesco.

Gracias!!

  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 05 enero 2009 - 08:48

Hola Pollo2004,

Los triggers son sentencias o rutinas que se van a ejecutar como respuesta ante alguna operación en una tabla.
Las operaciones que se pueden realizar en una tabla son las muy conocidas ABM: Altas, Bajas, y Modificaciones.

Ahora bien, existen 6 clases de triggers:
BEFORE UPDATE: que se ejecuta antes de que se produzca la inserción en la tabla
AFTER UPDATE: se ejecuta después de realizar una inserción en la tabla.

BEFORE DELETE: igual que el BEFORE UPDATE unicamente que se aplica cuando se va eliminar un registro de la tabla.
AFTER DELETE: se ejecuta, como es de esperar luego de eliminar el registro.

Del mismo modo, para un UPDATE: antes y después.

¿Que hacen esas sentencias?
Lo que uno necesite hacer. Por lo general se usan para realizar operaciones sobre otra tabla. Por ejemplo, para llevar un log o histórico, para actualizar datos relacionados a dicha tabla.

Con respecto a si puede dispararse cuando se conecte... ummm... no te sabría decir. NO estoy seguro pero creo que a partir de Firebird 2.1.1 existen triggers a nivel de base de datos además de los de a nivel tabla.

Según veo en la FAQ, tal parece que no estoy errado. Existe el trigger CONNECT como también el DISCONNECT y triggers a nivel de transacción: TRANSACTION START, TRANSACTION COMMIT, TRANSACTION ROLLBACK.
Sugiero que leas el documento "Release Notes" de la versión 2.1.1 como así también los otros documentos que están a disposición en el sitio de Firebird.

Las consultas SQL las deberás colocar donde sea necesario: tanto en tus componentes de acceso (como puede ser un TIBQuery, un TIBDataSet o cualquier DataSet que permita lanzar instrucciones SQL) como dentro de algún trigger, o procedimiento almacenado. Depende de lo que estás por hacer.

Si te refieres a como lanzar SQLs desde Delphi, como he dicho: emplear algún componente "Query" como lo puede ser TIBQuery (de los IBX), ZQuery (de los Zeos). Éstos cuentan con una propiedad llamada SQL que es del tipo TStrings. En esta propiedad es donde uno debe añadir la instrucción SQL (no sólo se emplea para consultas). Por ejemplo:



delphi
  1. IBQuery1.Close; // cerramos el query
  2. IBQuery1.SQL.Clear; // limpiamos la consulta
  3. IBQuery1.SQL.Add('select tus_campos');
  4. IBQuery1.SQL.Add('from tu_tabla');
  5. IBQuery1.SQL.Add('where condicion');
  6. // O bien:
  7. // IBQuery1.SQL.Text := 'select tus_campos from tu_tabla where condicion');
  8. IBQuery1.Open; // ejecutamos y abrimos la consulta SELECT.



Ahora bien, en caso de ser cualquier otra instrucción se debe usar Execsql en vez de Open. Al ser un dataset nos podemos mover por los registros: Next, First, Last, Prior. Como también podemos buscar un registro dentro del conjunto devuelto con Locate y/o aplicarle un Filtro haciendo uso de Filter y Filtered.
Puedes acceder a los campos y registros haciendo uso de Fields, FieldByName, etc.

Es como los componentes Table unicamente que tiene el poder de lanzar SQL.

Si tienes nuevas dudas no dudes en consultarnos. Espero que se me entienda.
Saludos,
  • 0




IP.Board spam blocked by CleanTalk.