
ENTORNO VISUAL DEL POSTGRESQL VENTAJAS Y DESVENTAJAS
PostgreSQL es un sistema de gestión de base de datos relacional orientada a objetos y libre.
Ahora vayamos a lo supuestamente más difícil, como trabajar con las transacciones que tenemos. Las conocidas tablas (cabeceas de documento y detalle de documento). Bueno se ha creado 4 propiedades fundamentales y un método que hay que tener en cuenta:
Propiedades:
• Clave primaria = llave primara para la actualización de registros
• Validacampotablasql = Valor de .T. o .F. Compara la tabla del SQL con el cursor que se ha utilizado.
• Validaimg = Valor de .T. o .F. Si la tabla tiene imágenes
• Validar fecha = Valor de .T. o .F. Cuando queremos guardar fechas vacía en mysql no permite enviar error como si estuviéramos mandando valores .null. a un campo de tipo fecha, en SQLServer no hay problema.
• sqlupdateinsert = Sus parámetros (cAccion, cTablaSqlCur, cTablaSql, CondUpdate)
• cAccion = “N” nuevo; “A” Actualiza.
Forma de uso, no pongo la opción para eliminar porque es sumamente sencillo. El comando que se utiliza para recuperar una tabla de cualquier motor de base de datos es.
SQLExecute (Conexión,”Select * From Tabla ”,”TablaCursor”)
Yo tengo un método que es similar con la diferencia que sale el error específico si sale mal la consulta o hay algún campo mal escrito.
Thisform.Execute(”Select * from Tabla ”,”TablaCursor”)
Forma de uso: Si queremos utilizar un cursor que hemos agregado campos diferentes que no pertenecen a la tabla que vamos hacer referencia.
Thisform.Execute(“Select * From CabeceraDoc”,”TmpCabecerado”)
El segundo parámetro le puede dar el nombre que desean.
Select TmpCabecerado
Replace numerodoc with thisform.txtnumerodoc.value
Replace fecha with thisform.txtfecha.value
=TABLEUPDATE(.T.)
Como pueden observar todo el código es de VFP no hay nada nuevo y seguro mucho de ustedes lo tienen así. Utilizando la clase reemplazas =TABLEUPDATE(.T.) Por
Thisform.Validarfecha = .T.
=Thisform.Sqlupdateinsert(“N”,”TmpCabecerado”,”CabeceraDoc”)
Aquí no valida los campos, la imagen…y todo tu código sigue igual, ahora veremos cuando utiliza validacampotablasql
Thisform.Execute (“Select d.*, p.Descripcion, p.Unidad From DetalleDoc d ;
Inner Join Productos p On d.CodPro = p.CodPro ”,”TmpDetalle”)
Aquí vemos que no todo los campos pertenecen a la tabla DetalleDoc, no guardo la descripción del producto en mi tabla detalle y lo mismo pasa con la cabecera si queremos recuperar un documento y aumentamos el nombre del cliente, lo traemos todo en un solo cursor pero si hacemos cambios ahí sería conveniente utilizar el método validacampotablasql.
Si es un detalle con varios ítems, seria de la siguiente manera:
Thisform.Validacampotablasql = .T.
Select TmpDetalle
Go top
If !eof() && me aseguro que tenga datos
Scan TmpDetalle.cantidad >0 && me aseguro que tenga cantidad
=Thisform.Sqlupdateinsert(“N”,” TmpDetalle”,” DetalleDoc”)
Endscan
Endif
Para la actualización de los registro seria todo igual, con la única diferencia que esta vez debemos de determinar quien es la llave principal y poder hacer los cambios sobre ello.
Thisform.cllaveprimaria = “NumeroDoc”
Thisform.Sqlupdateinsert (“A”,”TmpCabecerado”,”CabeceraDoc”)
Nota: CondUpdate se utiliza si quiero seguir restringiendo la actualización.
PostgreSQL es un sistema de gestión de base de datos relacional orientada a objetos y libre.
Ahora vayamos a lo supuestamente más difícil, como trabajar con las transacciones que tenemos. Las conocidas tablas (cabeceas de documento y detalle de documento). Bueno se ha creado 4 propiedades fundamentales y un método que hay que tener en cuenta:
Propiedades:
• Clave primaria = llave primara para la actualización de registros
• Validacampotablasql = Valor de .T. o .F. Compara la tabla del SQL con el cursor que se ha utilizado.
• Validaimg = Valor de .T. o .F. Si la tabla tiene imágenes
• Validar fecha = Valor de .T. o .F. Cuando queremos guardar fechas vacía en mysql no permite enviar error como si estuviéramos mandando valores .null. a un campo de tipo fecha, en SQLServer no hay problema.
• sqlupdateinsert = Sus parámetros (cAccion, cTablaSqlCur, cTablaSql, CondUpdate)
• cAccion = “N” nuevo; “A” Actualiza.
Forma de uso, no pongo la opción para eliminar porque es sumamente sencillo. El comando que se utiliza para recuperar una tabla de cualquier motor de base de datos es.
SQLExecute (Conexión,”Select * From Tabla ”,”TablaCursor”)
Yo tengo un método que es similar con la diferencia que sale el error específico si sale mal la consulta o hay algún campo mal escrito.
Thisform.Execute(”Select * from Tabla ”,”TablaCursor”)
Forma de uso: Si queremos utilizar un cursor que hemos agregado campos diferentes que no pertenecen a la tabla que vamos hacer referencia.
Thisform.Execute(“Select * From CabeceraDoc”,”TmpCabecerado”)
El segundo parámetro le puede dar el nombre que desean.
Select TmpCabecerado
Replace numerodoc with thisform.txtnumerodoc.value
Replace fecha with thisform.txtfecha.value
=TABLEUPDATE(.T.)
Como pueden observar todo el código es de VFP no hay nada nuevo y seguro mucho de ustedes lo tienen así. Utilizando la clase reemplazas =TABLEUPDATE(.T.) Por
Thisform.Validarfecha = .T.
=Thisform.Sqlupdateinsert(“N”,”TmpCabecerado”,”CabeceraDoc”)
Aquí no valida los campos, la imagen…y todo tu código sigue igual, ahora veremos cuando utiliza validacampotablasql
Thisform.Execute (“Select d.*, p.Descripcion, p.Unidad From DetalleDoc d ;
Inner Join Productos p On d.CodPro = p.CodPro ”,”TmpDetalle”)
Aquí vemos que no todo los campos pertenecen a la tabla DetalleDoc, no guardo la descripción del producto en mi tabla detalle y lo mismo pasa con la cabecera si queremos recuperar un documento y aumentamos el nombre del cliente, lo traemos todo en un solo cursor pero si hacemos cambios ahí sería conveniente utilizar el método validacampotablasql.
Si es un detalle con varios ítems, seria de la siguiente manera:
Thisform.Validacampotablasql = .T.
Select TmpDetalle
Go top
If !eof() && me aseguro que tenga datos
Scan TmpDetalle.cantidad >0 && me aseguro que tenga cantidad
=Thisform.Sqlupdateinsert(“N”,” TmpDetalle”,” DetalleDoc”)
Endscan
Endif
Para la actualización de los registro seria todo igual, con la única diferencia que esta vez debemos de determinar quien es la llave principal y poder hacer los cambios sobre ello.
Thisform.cllaveprimaria = “NumeroDoc”
Thisform.Sqlupdateinsert (“A”,”TmpCabecerado”,”CabeceraDoc”)
Nota: CondUpdate se utiliza si quiero seguir restringiendo la actualización.
Evita copiar y pegar.
ResponderEliminarcalñificacion 8