Sei sulla pagina 1di 18

APLICACIN DE DATASTORE, CURSORES,

IMPRECIN

CURSO : COMPUTACIN II
INTEGRANTES: ASCOY GUERRA BRYAN
BERMUDEZ SILVA ALLAN
GONZALES MACHADO LUIS
LOPEZ MENDOZA EDUARDO
VSQUEZ CABALLERO OSCAR

DOCENTE : VEGA MORENO CARLOS


DATASTORE

El DataStore es un control DataWindow no visual, la ventaja principal de usar un


DataStore frente a un DataWindow es que consume menos recursos, por ende es ms
eficiente en recuperar datos.

La manipulacin de un DataStore es similar a un DataWindow. En el siguiente ejemplo


dejo el cdigo para declarar y recuperar datos usando un DataStore.

DataStore ds_prueba //Declara variable del tipo DataStore


ds_prueba=Create DataStore //Se Instancia la variable
ds_prueba.DataObject="dw_authors" //Se establece el objeto DataWindow
ds_prueba.SetTransObject(SQLCA) //Se conecta a la BD
ds_prueba.Retrieve() //Recupera la informacin
DESTROY ds_prueba

Nota: el DataObject siempre se establece antes de conectar el DataStore a la Base de


Datos.

Un DataStore cumple la misma funcin que un DW oculto; pero la ventaja es que


emplea pocos recursos del sistema.
Por ejemplo, puedes usar cuando resulta incmodo mostrar un informe grande, y
como no es necesario verlo, sino imprimirlo, puedes emplear un DataStore. O
tambin puedes usarlo, cuando deseas pasar ciertos datos de un DW visible a otro
DW invisible (en este caso, se usa el DataStore) y tener guardado los datos de este
ltimo.
Ejemplo:

Vamos a recuperar datos dentro de un DataStore, para imprimirlo.

datastore lds_dstore
lds_dstore = CREATE datastore
lds_dstore.DataObject="d_Empleado"
lds_dstore.SetTransObject (SQLCA)
lds_dstore.Retrieve()
lds_dstore.Print() //Imprimimos:
Destroy lds_dstore //No olvides destruirlo

Por qu y cundo se utiliza DataStore?

Utilizamos el almacn de datos, si queremos trabajar con los datos en datawindow, pero
slo en el fondo. El usuario no necesita ver los datos en s.

S, de hecho, podemos utilizar DataWindow tambin para hacer eso, con desactivacin en
la propiedad visible. Pero, es media, tiene que insertar el control de la base de datos de la
aplicacin, y tambin significa que el control siempre en la memoria siempre y cuando la
aplicacin se est ejecutando. Con DataStore, slo tiene que crear el control cuando se
necesita, y puede ser destruido cuando ya no sean necesarios.

CURSORES

El cursor bsicamente lo que hace es recorrer todos los registros devueltos por una
consulta sql, el cual lo recorremos mediante bucles una vez abierto el cursor.
Sentencias en el uso de cursores.

DECLARE, especfica la sentencia SELECT del cursor. Sirve para declarar un


cursor antes de ser utilizado.
OPEN, ejecuta la sentencia SELECT del cursor.
FETCH, Permite leer una fila o registro de una tabla y almacena los valores de
una fila del cursor en las variables que nosotros lo definamos.
UPDATE WHERE CURRENT OF cursor, actualiza la fila buscada.
DELETE WHERE CURRENT OF cursor, borra la fila buscada.
CLOSE, termina el procesamiento del cursor.
Lo primero que necesitamos saber es cuantos registros va a tener la consulta que
necesitamos hacer para recorrer en el bucle entonces podamos hacerlo mediante un
select count(*)

[sql]
select count(*)
into :cant_filas
from cuentas
where estado = 'I'
[/sql]

Ahora que ya tenemos la cantidad de filas a ser recorridas ya podemos declarar nuestro
cursor:

[sql]
declare vcursor cursor for
select id, saldo_inicial
from cuentas
where estado = 'I'
[/sql]

Ya tenemos declarado nuestro cursor nada mas nos falta abrirlo:

[code]
open vcursor;
[/code]
Ya hemos abierto, entonces ya podemos recorrer nuestro cursor:

[code]
for i=1 to cant_filas
fetch vcursor into :vid, :vsaldo_inicial;
messagebox(''+string(vid_vehiculo)+'', 'saldo: ' + string(vsaldo_inicial))
next
[/code]

Con esto ya hemos recorrido el cursor con la palabra clave fetch seguido del nombre del
cursor y claro ah dentro del bucle uno ya puede hacer lo que se le antoje, ahora que ya
hemos recorrido todo nos queda cerrar nuestro cursor:

[code]
close vcursor;
[/code]

Y con estos pasos ya hemos logrado recorrer las filas devueltas por una consulta sql
generada por una base de datos.

EJEMPLO CURSORES

Un Cursor un PB es una forma muy util para procesar un set de resultados registro por
registro.

string depto
string empleado
string nombre
DECLARE dept_curs CURSOR FOR SELECT codigo,
nombre FROM departamentos;
OPEN dept_curs;
if SQLCA.sqlcode < 0 then
MessageBox("Open Cursor",SQLCA.sqlerrtext)
end if

DO WHILE SQLCA.sqlcode = 0
FETCH dept_curs INTO :depto, :empleado;
if SQLCA.sqlcode < 0 then
MessageBox("Fetch Error",SQLCA.sqlerrtext)
elseif SQLCA.sqlcode = 0 then
SELECT nombre_empleado INTO
:nombre FROM empleados WHERE emp_id = :empleado;
if SQLCA.sqlcode <> 0 then
MessageBox("select", &
SQLCA.sqlerrtext)
end if
end if
LOOP
CLOSE dept_curs;

if SQLCA.sqlcode <> 0 then


MessageBox("Close Cursor", SQLCA.sqlerrtext)
end if

//fin del codigo


SINTAXIS DE UN CURSOR

DECLARE <nombre_cursor> CURSOR FOR


SELECT <columna 1>,
<columna 2>,
....
FROM <tabla 1>,
<tabla 2>,
etc....
WHERE <condicion>
USING <objeto de transaccion>;

Ejemplo:

Datos:

SELECT A.campo1, b.campo2


FROM tabla1 a, tabla2 b
WHERE tabla1.campo = tabla2.campo INTO cursor X

En el script

DECLARE cursor_x CURSOR FOR


SELECT a.campo1, b.campo1
FROM tabla1 a, tabla2 b
WHERE (a.campo = b.campo)
USING SQLCA;
Luego para abrir el cursor

OPEN <cursor>;

Y para leer el resultado


FETCH <cursor>
INTO :<variable1>,
:<variable2>,
...
:<variable...>;

Y finaliza cerrando el cursor

CLOSE <cursor>;

Por lgica los valores seleccionados en el script, debern ser asignados a variables del
mismo tipo.

El fetch actualiza los valores.

DECLARE CursorName CURSOR FOR SelectStatement

{USING TransactionObject} ;

Se lo usa para crear listas de una tabla, estas listas pueden ser recorrida registro por
registro.

CursorName; El nombre de la lista que se creara.

SelectStatement: Seleccin de los campos usando un select del sql, la lista se formara con
los campos que conforman el select.

TransactionObject; El nombre del objeto de la transaccin, se lo usa cuando se usa una


transaccin del tipo SQLCA.

Ejemplo:
DECLARE c1 CURSOR FOR

SELECT cod_testigo, nombre

FROM Testigo;

Crea un cursor (lista) llamado c1, el cual esta formado por 2 campos cod_testigo, y
nombre de la tabla testigo.

FETCH NEXT Cursor | Procedure INTO HostVariableList

Recorre el cursor (lista), este recorrido se lo hace de forma secuencial.

Cursor: Nombre del cursor que se recorrer.

HostVariableList: Las variables en las cuales se almacenaran los campos de la lista que se
esta recorriendo.

Ejemplo:

integer i,n,cod

string nom

DECLARE c1 CURSOR FOR

SELECT cod_testigo, nombre

FROM Testigo;

select count(*)

into :n

from testigo;

OPEN c1;

for i= 1 to n

FETCH NEXT c1 INTO :cod, :nom;


sle_1.text=string(cod)

sle_2.text=nom

next

CLOSE c1;

Se crea el cursor, se cuenta el nmero de registros, se abre el cursor, y se recorre el cursor


(lista), luego se presenta cod, nom, y se lo presenta en pantalla, al final se cierra el cursor.

IMPRESION
Esta funcin se utiliza cuando queremos enviar el contenido de un datawindows a la
impresora.

Podemos usar las diferencias funciones:

Modify(string).- Modifica especificaciones sobre DataWindows, estas especificaciones son


cambiadas o pueden ser cambiadas desde un scrip cualquiera, puede aadir quitar objetos
del DataWindow, para proveer especificaciones que el usuario desee o requiera.
Ejemplo:
dw_1.modify("datawindow.print.preview.zoom=" + &
string(integer(dw_1.describe("datawindow.print.preview.zoom")) + 10))

El ejemplo pone el zoom del DataWindow maestro en un 10 % es decir se puede


incrementar o decrementar el Zoom del datawindow, esto se lo usa especialmente en los
reportes de tipo COMPOSITE, que son aquellos que sirven para la presentacin de
reportes escritos o en pantalla.

print()
Imprim lo que se encuentra en el DataWindow.
ejemplo:
dw_maestro.print()

Imprime lo que se encuentre en el DataWindow.

Printsetup().- Muestra el cuadro de dialogo para seleccionar impresora.


Modify(cadena)
Modifica las propiedades asociadas a un DataWindow, puede adicionar o mantener
objetos del DataWindow

Ejemplo.- Datrawindow imprime


imprime=dw_2
imprime.modify("datawindow.print.copies = " + "2")
Determina que el nmero de copias que sern impresos es 2 cuando se imprima el
datawindow mediante el comando print.
EN LA APLICACIN

VENTANA DE INGRESO
DE EMPLEADOS

CREACION DEL
DATASTORE usuario,
en el evento Open de la
ventana Seguridad

Comparamos la clave
ingresada con la base de
Datos, y luego destruimos
en DataStore.
Ventana Bsqueda de
Prendas, utilizando
Cursores.

Creamos el cursor
CURSOR1, en el evento
Open de la ventana
w_busqueda_rapida.

Utilizando sentencia Sql


asignamos a las variables el
contenido de cada atributo. Y se
muestra en cada SingleLineEdit
Esta ventana fue creada para
mostrar e ingresar nuevos
productos, mediante DataStore

Creamos DataStore para cada


control DropDownListBox Tipo,
Prenda, Encargado, Proveedor; y
as poder llenar los datos del
nuevo producto.
En el evento CloseQuery, antes
de cerrar una ventana,
destruimos todos los DataStore
creados.
Para el uso de
impresiones, creamos
ventanas de reporte
tanto para
empleados,
proveedores y
productos.
En todas las ventanas de
Reportes se trabaj con los
siguientes CommandButton.

CommandButton Vista Previa:


Muestra cmo se ver el
documentos antes de imprimir.

CommandButton Regla: Muestra


una regla en el contorno del
documento para poder editar
antes de imprimir.

CommandButton Zomm:
Aumenta y reduce la visin del
documento, con un 10%.
CommandButton Imprimir:
Manda el documento a la
impresora.

DropDownListBox Orientacin:
Es la opcin de manipular la
orientacin del documento
(Horizontal o Vertical)

CommandButton Copiar:
Permite considerar el nmero
de documentos a imprimir,
ingresados en el sle_1.

Potrebbero piacerti anche