Olá!
Ficou assim, tudo rodando 100%!
Código: Selecionar todos
#require "rddsql"
#require "sddpg"
#require "sddodbc"
#include "dbinfo.ch"
#include "error.ch"
REQUEST SDDPG
REQUEST SQLMIX
REQUEST SDDODBC
ANNOUNCE RDDSYS
FIELD RESIDENTS, CODE, NAME
PROCEDURE Main()
Local nCon, tmp
setmode(33,100)
rddSetDefault( "SQLMIX" )
? "RDDs:"; AEval( rddList(), {| x | QQOut( "", x ) } )
IF nCon := rddInfo( RDDI_CONNECT, { "POSTGRESQL","127.0.0.1","postgres","xyz",,"5432"}) == 0
? "Could not connect to the server"
RETURN
ENDIF
dbUseArea( .T., "SQLMIX" , "select datname from pg_database where datname = 'dbase'",'xx' )
if empty(xx->(lastrec()))
if !rddInfo( RDDI_EXECUTE, "CREATE DATABASE dbase;" )
? "Fail to create database dbase"
endif
endif
xx->(dbCloseArea())
? RDDINFO(RDDI_DISCONNECT, nCon)
IF rddInfo( RDDI_CONNECT, { "POSTGRESQL","127.0.0.1","postgres","xyz","dbase","5432"}) == 0
? "Could not connect to the server"
ENDIF
CreateTable()
? "browse da tabela (pressione uma tecla)"
dbUseArea( .T., , "SELECT * FROM paises", "paises" )
Browse()
? "browse da tabela ordenado por resident count (pressione uma tecla)"
inkey(0)
INDEX ON field->RESIDENTS TAG residents
Browse()
dbCloseArea()
dbUseArea( .T., "SQLMIX" , "SELECT * FROM paises", "paises" )
FOR tmp := 500 TO 600
dbAppend()
field->CODE := StrZero( tmp, 3 )
field->NAME := "Test append " + hb_ntos( tmp )
NEXT
dbGoto( 101 )
INDEX ON field->RESIDENTS TAG residents
browse()
dbCloseAll()
cls
RETURN
STATIC PROCEDURE CreateTable()
LOCAL tmp
? rddInfo( RDDI_EXECUTE, "DROP TABLE paises" )
? rddInfo( RDDI_EXECUTE, "CREATE TABLE paises (CODE char(3), NAME char(50), RESIDENTS int)" )
? rddInfo( RDDI_EXECUTE, "INSERT INTO paises values " + ;
"('LTU', 'Lithuania', 3369600), " + ;
"('USA', 'United States of America', 305397000), " + ;
"('POR', 'Portugal', 10617600), " + ;
"('POL', 'Poland', 38115967), " + ;
"('AUS', 'Australia', 21446187), " + ;
"('FRA', 'France', 64473140), " + ;
"('RUS', 'Russia', 141900000)" )
FOR tmp := 1 TO 100
rddInfo( RDDI_EXECUTE, "INSERT INTO paises VALUES " + ;
"('" + StrZero( tmp, 3 ) + "', 'TestSQL " + hb_ntos( tmp ) + "', 3369600)")
NEXT
RETURN
PS. Ainda não sei como conectar a uma tabela do banco de dados tive que fechar a conexão e abrir já conectado na tabela.
O comando "IF NOT EXISTS" funciona para tabelas não tem para DATABASE.
Saudações,
Itamar M. Lins Jr.