Editar RowSet con dos tablas - At. Mr. Rao
Posted: Tue Jul 09, 2019 4:09 pm
Mr. Rao necesito editar una tabla de ventas mostrando el nombre del cliente, pero no logro ver el campo del cliente en oRec
Este es un ejemplo de practica para ir entendiendo el manejo nativo de mysql
Gracias
Saludos
Este es un ejemplo de practica para ir entendiendo el manejo nativo de mysql
Code: Select all
#include "fivewin.ch"
STATIC oConn
Function main()
local lDBOk, aStru, cQuery, oQry
FWCONNECT oConn HOST "127.0.0.1" USER "root" PASSWORD "1234" DB "fwhnativo" PORT 3306
IF oConn==nil
? "ERROR DE CONEXION"
RETURN NIL
ENDIF
//-----------------------------------------------------------------
aStru := { { "id_cliente", "+", 11, 0 },;
{ "name", "C", 100, 0,"utf8" } }
oConn:DropTable( "clientes" )
oConn:CreateTable( "clientes", aStru, , "utf8" )
oConn:Insert( "clientes", "name", { 'Distribuidora Pepe' } )
oConn:Insert( "clientes", "name", { 'Estacion de Servicio YPF' } )
oConn:Insert( "clientes", "name", { 'Agropecuaria Venado' } )
//-----------------------------------------------------------------
aStru := { { "id_venta", "+", 11, 0 },;
{ "id_cliente", "INT", 11, 0 },;
{ "fecha", "D", 8, 0 },;
{ "cpte", "C", 15, 0,"utf8" },;
{ "importe", "N", 12, 2 } }
oConn:DropTable( "ventas" )
if !oConn:TableExists( "ventas" )
oConn:CreateTable( "ventas", aStru, , "utf8" )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 1,'2019-07-01','Factura',1200 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 2,'2019-07-01','Factura',2400 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 3,'2019-07-01','Factura',3500 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 2,'2019-07-01','Factura', 200 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 3,'2019-07-01','Factura',1000 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 1,'2019-07-01','Factura', 950 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 2,'2019-07-01','Factura', 350 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 2,'2019-07-01','Factura',9500 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 3,'2019-07-01','Factura',2200 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 2,'2019-07-01','Factura',3200 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 1,'2019-07-01','Factura',4200 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 3,'2019-07-01','Factura',5200 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 3,'2019-07-01','Factura',5200 } )
oConn:Insert( "ventas", "id_cliente,fecha,cpte,importe", { 1,'2019-07-01','Factura',6200 } )
ENDIF
//-----------------------------------------------------------------
if !oConn:TableExists( "ventas_item" )
oConn:CreateTable( "ventas_item", { ;
{ "id_item", '+', 11, 0 }, ;
{ "id_venta", "REFERENCES ventas(id_venta) ON UPDATE CASCADE ON DELETE CASCADE" },;
{ "cantidad", 'N', 12, 2 }, ;
{ "precio_unitario", 'N', 12, 2 }, ;
{ "fecha_creada", '=', 8, 0 };
}, nil, "utf8" )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", { 1,2,600 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", { 2,3,800 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", { 3,1,3500 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", { 4,2, 100 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", { 5,2, 500 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", { 6,1, 950 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", { 7,1, 350 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", { 8,1,9500 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", { 9,2,1100 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", {10,1,3200 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", {11,1,4200 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", {12,1,5200 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", {13,1,5200 } )
oConn:Insert( "ventas_item", "id_venta,cantidad,precio_unitario", {14,1,6200 } )
endif
brw()
Return nil
// EDICION DE VENTAS CON LEFT JOIN A CLIENTES
function brw()
local oDlg, oQry, oBrw
oQry := oConn:RowSet("SELECT t1.*, t2.name FROM ventas t1 LEFT JOIN clientes t2 ON t1.id_cliente=t2.id_cliente WHERE t1.id_venta=6")
xbrowse(oQry)
DEFINE DIALOG oDlg SIZE 400,470 PIXEL TRUEPIXEL
@ 70,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg;
DATASOURCE oQry AUTOCOLS;
COLSIZES -4, -20, -20;
CELL LINES NOBORDER FOOTERS
oQry:EditBaseRecord( nil, .f., { |oRec| MyEditDlg( oRec ) }, oBrw )
ACTIVATE DIALOG oDlg
xBrowse(oQry)
return nil
//--------------------------------------------------------------------------
function MyEditDlg( oRec )
local lNew := ( oRec:RecNo == 0 )
local oDlg, oFont
LOCAL cCliente // :=oRec:aData["name"]
xbrowse(oRec:aData)
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15
DEFINE DIALOG oDlg SIZE 400,470 PIXEL TRUEPIXEL FONT oFont;
TITLE If( lNew, "ADD NEW ", "EDIT" ) + " RECORD"
@ 030,020 SAY "ID Cliente:" SIZE 80,20 PIXEL OF oDlg RIGHT
@ 060,020 SAY "First" SIZE 80,20 PIXEL OF oDlg RIGHT
@ 090,020 SAY "Last" SIZE 80,20 PIXEL OF oDlg RIGHT
@ 120,020 SAY "Cliente" SIZE 80,20 PIXEL OF oDlg RIGHT
@ 030,120 GET oRec:id_cliente SIZE 100,22 PIXEL OF oDlg READONLY RIGHT
@ 060,120 GET oRec:fecha SIZE 240,22 PIXEL OF oDlg VALID !Empty( oRec:fecha )
@ 090,120 GET oRec:importe SIZE 240,22 PIXEL OF oDlg PICTURE "999999.99" VALID !Empty( oRec:importe )
@ 120,120 GET cCliente SIZE 240,22 PIXEL OF oDlg READONLY
@ 420,020 BTNBMP PROMPT "Save" SIZE 150,30 PIXEL FLAT OF oDlg ;
ACTION ( If( oRec:Modified(), oRec:Save(), nil ), oDlg:End() ) WHEN oRec:Modified()
@ 420,240 BTNBMP PROMPT "Cancel" SIZE 150,30 PIXEL FLAT OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
//ON PAINT oDlg:Box( 15, 10, 395, 390 )
xBrowse(oRec:aData)
return nil
//--------------------------------------------------------------------------
Saludos