#require "rddsql"
#require "sddodbc"
#include "dbinfo.ch"
#include "simpleio.ch"
REQUEST SQLMIX, SDDODBC
#include "hwgui.ch"
PROCEDURE Main()
LOCAL oDlg, oBrwDb, nConnection, nI, aI, cResp
Set( _SET_DATEFORMAT, "yyyy-mm-dd" )
rddSetDefault( "SQLMIX" )
nConnection := rddInfo( RDDI_CONNECT, { "ODBC", "Server=localhost;Driver={MySQL ODBC 8.0 Unicode Driver};dsn=;User=root;Pwd=@itamar;" } )
IF nConnection == 0
hwg_msginfo( "Could not connect to server", rddInfo( RDDI_ERRORNO ), rddInfo( RDDI_ERROR ) )
RETURN Nil
ENDIF
hwg_msginfo( str(nConnection) )
//Criando o Banco de Dados (Pasta que vai ficar as tabelas)
cResp := iif( rddInfo( RDDI_EXECUTE, "CREATE DATABASE IF NOT EXISTS `basedados`" )," Ok"," Falhou" )
hwg_msginfo( 'rddInfo( RDDI_EXECUTE, "CREATE DATABASE IF NOT EXISTS `basedados`"' + cResp )
//Conectando (abrindo a pasta)
cResp := iif( rddInfo( RDDI_EXECUTE, "USE `basedados`" ) ," Ok", " Falhou " )
hwg_msginfo( 'rddInfo( RDDI_EXECUTE, "USE `basedados`"' + cResp )
//Criando a Tabela = DBF => clientes
cResp := iif( rddInfo( RDDI_EXECUTE, "DROP TABLE clientes" ), " Ok", " Falhou" )
hwg_msginfo( 'rddInfo( RDDI_EXECUTE, "DROP TABLE clientes" ) ' + cResp )
//Criando a estrutura da tabela = Dbcreate(DBF)
cResp := iif( rddInfo( RDDI_EXECUTE, "CREATE TABLE clientes (IdCliente char(3), NOME char(50), Valor int(11))" ), " Ok"," Falhou")
hwg_msginfo( 'rddInfo( RDDI_EXECUTE, "CREATE TABLE clientes...)' + cResp )
//Incluindo registros = APPEND
cResp := iif( rddInfo( RDDI_EXECUTE, "INSERT INTO clientes values ('001', 'Maria', 1),('002', 'Joπo', 2), ('003', 'Pedro', 3), ('004', 'Paulo', 4), ('005', 'Jonas', 5), ('006', 'Fernando', 6), ('007', 'Ruth', 7)" ), " Ok"," Falha")
hwg_msginfo( 'rddInfo( RDDI_EXECUTE, "INSERT INTO clientes...)' + cResp )
//Abrindo a tabela e puxando os dados já no padrπo DBF mamπo com açucar!, Veja que é SQL podemos já filtrar tudo, vem em DBF!
cResp := iif( dbUseArea( .T., , "SELECT * FROM clientes", "cl" ), " Ok"," Falhou")
Hwg_msginfo( 'dbUseArea( .T., , "SELECT * FROM clientes", "cl" )' + cResp )
cl->(dbGoBottom())
cl->(dbGoTop())
INIT Dialog oDlg AT 0,0 SIZE 800,600
@ 10 ,10 BROWSE oBrwDb DATABASE SIZE 580, 385
oBrwDb:AddColumn( HColumn():New( "Field1" , FieldBlock(Fieldname(1)),"C", 03,0) )
oBrwDb:AddColumn( HColumn():New( "Field2" , FieldBlock(FieldName(2)),"C", 50,0) )
oBrwDb:AddColumn( HColumn():New( "Field3" , FieldBlock(FieldName(3)),"N", 11,0) )
ACTIVATE Dialog oDlg center
dbCloseAll()
RETURN Nil
Saudações,
Itamar M. Lins Jr.