Jump to content
Fivewin Brasil

Qual a melhor solução para sair do DBF


edutraini

Recommended Posts

Crisvam

Boa noite

Uma base SQL vc pode abusar das alternativas de FRONT END, com certeza existem colegas aqui mais experientes que podem te fornecer informações mais avançadas nestes termos.

O SGBD vc pode instalar onde vc quiser, seja em CLOUD, em um servidor seu com todas as estruturas e recursos para os acessos dos seus clientes, no parque de informática do cliente e etc

O acesso é definido por vc. Supondo que vc instale no ambiente do cliente, o acesso mais viável é local, pelo ganho na velocidade de tráfego dos pacotes, porém, este mesmo SERVER poderá estar disponível remotamente e dependerá somente da configuração do acesso no SGBD (Estou me referindo ao POSTGRES, os demais, como MSSQL, MYSQL, FIREBIRD eu não sei, mas não deve ser muito diferente).

Quando vc conecta ao SERVER, os BD's (O conceito de DATABASE é um para várias tabelas, que seria mais ou menos uma pasta com vários arquivos dbf's), ficam a sua disposição, não sei qual o limite de BD's no POSTGRES e nem de tabelas, mas a coisa é monstruosa.

A conexão remota, vc só precisa que seu aplicativo disque o IP de conexão e acesse o BD onde quer que vc esteja, sem precisar efetuar qualquer tipo de emulação ou aplicativos de terceiros.

No meu caso, optei pela SQLRDD, devido ao meu conceito de sistemas, ou seja, eu tenho um sistema para cada cliente, com algumas rotinas ambíguas, mas no geral, são diferentes, devido aos segmentos diferentes de cada cliente, então cada um tem a sua particularidade, e se eu tivesse que utilizar o SQL NATIVO, não estaria nem falando GUGÚ DADÁ, muito menos engatinhando, pq as alterações são mínimas e após as conversões das bases, as alternativas para o SQL NATIVO fica mais fácil, pq as mesmas sentenças que vc cria utilizando a SQLRDD será a mesma para o NATIVO.

Se eu tiver que falar sobre as melhorias, vou ficar aqui dias discorrendo sobre o assunto, então para TESTE, sugiro que vc instale um SGBD, faça o UP-LOAD dos seus arquivos DBF (tabelas), tal qual está a sua modelagem atual, e crie algumas rotinas de teste, no caso do POSTGRES o gerenciador PGADMIN, irá te possibilitar criar sentenças \SQL e abusar de todas as formas sem riscos de cometer alguma situação drástica no seu sistema.

Se tiver com tempo, refaça a sua modelagem dos dados, pq em SQL essa é a parte mais importante, quanto melhor modelado a BASE, melhor performance vc terá.

Sobre documentação em Português, na internet vc vai achar dezenas de sites sobre o assunto, mas se puder ter acesso ao EULER TAVEIRA (Postgres), este é o cara, todas as melhorias em termos de necessidades de usuários em nível Brasil, passa por ele, e quando é viável, ele inclui.

Me lembro que, na palestra de Curitiba ele estava estudando alternativas de uma solução de BACK-UP em tempo real, sem alterar a performance do SGBD, pq todos eles existem esta solução, porém aumenta o tempo de resposta.

Espero não ter falado muitas besteiras, mesmo pq, nem daria pra explicar td o que explanei e sempre alguma coisa fica ??? sem resposta.

[]s,

Ok Jorge, muito grato pela atenção.

Link to comment
Share on other sites

Olá,

farei alguma coisa com os bons e velhos DBF´s

Depois de se familiarizar com um SGDB e migrar seus sistemas, você verá que esta sua citação só é legal se for num 386, ouvindo disco de vinil num gramofone, e outras coisas de saudosistas. Agora, para produzir mesmo... :)

Link to comment
Share on other sites

Um breve relato:

Estou migrando um sistema que usa DBF desde 1996 para Firebird.

Mas antes de escolher qual gerenciador de banco de dados (SGBD) utilizar, refiz o modelo de dados do sistema levando em consideração a migração de DBF para SQL. Algumas relações entre tabelas foram modificadas sem prejudicar os processos. Vai te facilitar muito entender o negócio e o que você precisa fazer...

Primeiro você deve entender como funciona um SGBD e como são realizadas as operações entre as tabelas (relembre as operações entre conjuntos da matemática). Só assim você vai estar preparado para o trabalho de migração e adaptação dos programas.

Em relação aos programas, sem muita dificuldade. Agora trato melhor as mensagens de retorno do SGBD nas manipulações de dados, pois o SGBD vai manter a integridade das tabelas quando você sinalizar as PK, FK e índices.

E por que Firebird!? Resolvi usar por ser mais leve... E até agora está dando conta do recado... E se você escrever corretamente, e com padrão, as operações com o SGBD, se precisar migrar para outro não será problema.

Se precisar de ajuda, pode me procurar.

Um abraço!

Rodrigo Melo

Belo Horizonte / MG

Link to comment
Share on other sites

Já que você vai usar o MySQL, antes de comprar a SQLRDD dê uma olhadinha na TDOLPHIN. É uma classe gratuita e que usa MYSQL e te garanto que o tempo pra se aprender a usar a TDOLPHIN é bastante curto, além de se fazer a migração do teu sistema em um tempo menor, e já usando comandos SQL.

Olá Kleyber.

Na verdade eu vou usar o PostgreSql. Estou montando uma banco em Mysql, só para dar um treino em sql.

Link to comment
Share on other sites

Desculpa pessoal travou o teclado

entao referente a variavel CONNECT_MYSQL esta dizendo que não existe.

Alguem poderia me dar uma dica aonde é criado essa variavel

IF ALLTRIM(cConnTipo) == "MYSQL" // SE A CONEXÃO FOR MYSQL
cConString1 :="MySQL="+lower(ALLTRIM(cConnName)) + ";" + "UID="+lower(ALLTRIM(cConnUsrs))+ ";"+"pwd="+lower(ALLTRIM(cConnPass))+ ";" +"dtb="+alltrim(LOWER(cConnBase))+";PRT=3306"
nCon1 := SR_AddConnection( CONNECT_MYSQL, cConString1 )
Link to comment
Share on other sites

Edu

Boa tarde

Eu não sei se vai te ajudar, mas como eu quebrei a cabeça também e não acho justo as vezes, sentir-se como cachorro correndo atrás do rabo, embora não vou negar, tive muitas ajudas aqui e também sei que sem elas não conseguiria dar o pontapé inicial, mas não sei se por questões de falta de conhecimento (O que eu duvido em todos os sentidos, pois sei que o domínio sobre o assunto e o conhecimento de muitos aqui são inesgotáveis, dignos de promover cursos e palestras), falta de tempo em participar do fórum e etc...

Tive que recorrer a inúmeras pesquisas e aos poucos criando alguns Frankenstein até conseguir efetuar as conexões e acessos ao Bd's sem muitas dificuldades e depois partir para a parte de manipulação dos dados.

Segue aqui algumas informações:

Usei os seguintes CH.

#include "firebird.ch" //firebrid

#include "sqlrdd.ch" //sqlrdd
#include "mysql.ch" //mysql
#include "sqlodbc.ch" ;;odbc
#include "pgs.ch" //postgres

os REQUEST:

REQUEST SR_PGS // Postgres >= 7.3 native connection //
REQUEST SQLRDD
REQUEST SR_ODBC
REQUEST SR_MYSQL

REQUEST SR_ODBC /* ODBC ou Unix ODBC Connection */

IF xConexao+xDrvConex $ "MYSQLNATIVE" //MYSQL NATIVE
ConnString := "MYSQL=" + xServIp + ";" + "UID=" + xUserCon + ";" + "PWD=" + xPassCon +";" + "DTB=" + xDbSql + ";" + "PRT=" + xPortCon
cConnection := SR_AddConnection( CONNECT_MYSQL , ConnString )
ENDIF

IF xConexao+xDrvConex $ "MYSQLSQLRDD" //MYSQL SQLRDD
ConnSMysql := "MYSQL=" + xServIp + ";" + "UID=" + xUserCon + ";" + "PWD=" + xPassCon +";" + "DTB=" + xDbSql + ";" + "PRT=" + xPortCon
oConMySql := SR_AddConnection( CONNECT_MYSQL , ConnSMysql )
xConSel := "MYSQLSQLRDD"
ENDIF

IF xConexao+xDrvConex $ "MYSQLNATIVE ADO" //MYSQL NATIVE ADO
ConnString := "MYSQL=" + xServIp + ";" + "UID=" + xUserCon + ";" + "PWD=" + xPassCon +";" + "DTB=" + xDbSql + ";" + "PRT=" + xPortCon
cConnection := SR_AddConnection( CONNECT_MYSQL , ConnString )
ENDIF
IF xConexao+xDrvConex $ "MSSQLODBC SQLRDD" //SQL SERVER SQLRDD
cConnection := "UID=" + xUserCon + ";" + "PWD=" + xPassCon + ";" + "DTB=" + xDbSql + ";" + "PRT=" + xPortCon + ";" + "DSN="+xDsnCon //MYSQL ODBC SQLRDD
oCon:= SR_AddConnection( CONNECT_ODBC, cConnection )
ENDIF
IF xConexao+xDrvConex $ "MSSQLODBC NATIVE CLIENT 10" //SQLSERVER NATIVE ODBC
cConnection := "UID=" + xUserCon + ";" + "PWD=" + xPassCon + ";" + "DATABASE=" + xDbSql + ";" + "DSN="+xDsnCon //SQL Native Client
oCon:= SR_AddConnection( CONNECT_ODBC, cConnection )
ENDIF
IF xConexao+xDrvConex $ "MSSQLODBC NATIVE SERVER" //SQLSERVER NATIVE ODBC
cConnection := "UID=" + xUserCon + ";" + "PWD=" + xPassCon + ";" + "DATABASE=" + xDbSql + ";" + "DSN="+xDsnCon //SQL Native Client
oCon:= SR_AddConnection( CONNECT_ODBC, cConnection )
ENDIF
IF xConexao+xDrvConex $ "POSTRGRENATIVE"
cConnection := "driver={SqlMsServer};Server=xServIp;Database=xDbSql;Uid=xUserCon;Pwd=xPassCon;" //SQL Native Client
ENDIF
IF xConexao+xDrvConex $ "POSTGRESQLRDD"
ConnSPrgs := "PGS=" + xServIp + ";" + "UID=" + xUserCon + ";" + "PWD=" + xPassCon +";" + "DTB=" + xDbSql + ";" + "PRT=" + xPortCon
oConPrgs := SR_AddConnection( CONNECT_POSTGRES , ConnSPrgs )
xConSel := "POSTGRESQLRDD"
ENDIF

IF xConexao+xDrvConex $ "FIREBIRDSQLRDD"
cConnection := "driver={SqlMsServer};Server=xServIp;Database=xDbSql;Uid=xUserCon;Pwd=xPassCon;" //SQL Native Client
ENDIF
IF xConexao+xDrvConex $ "FIREBIRNATIVE"
cConnection := "driver={SqlMsServer};Server=xServIp;Database=xDbSql;Uid=xUserCon;Pwd=xPassCon;" //SQL Native Client
ENDIF

If cConnection < 0
? "Erro de Conexao. Consulte o arquivo sqlerror.log para mais detalhes."
//SR_EndConnection(cConnection)
RETURN .F.
ENDIF

Daí pra frente é só acessar as tabelas e manipulá-las. No meu caso eu as criei diretamente utilizando a SQLRDD, usando o DBCREATE para criá-las e fiz os APPEND's normalmente como se estivesse utilizando em DBFNTX, DBFNTX e etc...

Outra coisa, informe todas as LIB's e CH's possíveis, como o meu conhecimento é xulé, então eu coloco todos possíveis, mas acredito que as abaixo sejam obrigatórias:

sqlbcc58.lib]
libmysql.lib]

libpq.lib]
oci.lib]
odbccp32.lib]

[]s,

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...