MENU
Início
Produtos
Loja Virtual
Quem Somos
Contato
Login
 
 
sql lib
Versão Free
Versão Plus!
Perguntas Comuns
Comparar versões
Notas da versão
Manual On-line
 
 
Ferramentas
xDevStudio
MyMake
DBF2SQL
 
 
Downloads
Catálago Geral
Harbour & xHarbour
Borland C++
Apostilas de SQL
 
 
Suporte
Obter Suporte
Fórum SQL LIB
Blog da SQL LIB
Grupo de Discussão
 
 
artigos
Instalando xHB
Instalando BCC
Migrando de Clipper
 
 
VÍdeos
Catálago Geral
MySQL - Baixando
MySQL - Instalando
 
     
 
Perguntas comuns
Perguntas feitas frequentemente sobre o projeto SQL LIB

Este documento lista as principais perguntas sobre o desenvolvimento de softwares utilizando a SQL LIB RDD, além de apresentar alguns comandos e funções introduzidos pelo RDD.
 
     
 
 
     
     
 
Como é o licenciamento do produto?
 
A SQL LIB RDD é licenciada para você ou para sua empresa, pois o nosso alvo é fornecer ferramentas para os desenvolvedores. O registro do produto pode ser feito para pessoas físicas ou juridicas e será emitido para o seu CNPJ/CPF indicado no formulário de aquisição do produto.
   
Se eu tiver 5 clientes preciso adquirir 5 licenças?
 
Não, pois o registro da SQL LIB é emitido uma única vez para você ou para sua empresa e não importa quantos clientes você possua ou quantos aplicativos diferentes você desenvolve com a sua licença.

Adquirindo uma única vez o produto, pode-se utilizar em quantos projetos e quantos clientes você necessitar.
   
Que ferramentas de apoio recebo ao adquirir o produto?
 
Ao adquirir uma licença da SQL LIB RDD você irá receber o manual completo do produto, código-fontes de exemplos, acesso ao fórum específico para clientes comerciais e também terá à sua disposição o suporte técnico preferencial via telefone, email e mensageiro instantâneo para tirar dúvidas.
 
OBS: É possível adquirir a SQL LIB em um regime especial de licenciamento com direito apenas para download das atualizações e com suporte técnico limitado. Consulte o seu plano de suporte para certificar-se dos serviços oferecidos.
   
Quanto tempo demora para que eu receba minha cópia do produto?
 
Vinte e quatro horas após a compensação do pagamento da sua fatura referente à licença da SQL LIB, o seu produto estará disponível para download em nosso site em àrea restrita para clientes comerciais.

Após a compensação da última parcela enviaremos pelo correio a sua nota fiscal com o seu número de registro, indicando assim que seu produto é original.
   
Expirado o meu prazo inicial, como faço para obter suporte ou as atualizações do produto?
 
Expirado o seu prazo, pode-se contratar um pacote adicional de suporte e/ou atualizações por um período específico de 6 (seis) à 12 (doze) meses. Durante este período você poderá baixar as atualizações e solicitar suporte técnico com a equipe do projeto.

Visite nossa Loja virtual para consultar valores e os pactores de suporte oferecidos.
 
     
 
     
 
 
     
   
 
Quais alterações serão necessárias no meu código fonte?
 
Programar com SQL LIB exige poucas alterações no seu código fonte e resume-se basicamente à três alterações:
 
• Inserir o comando REQUEST apropriado para linkagem correta da LIB.
• Inserir o comando para se conectar ao banco de dados.
• Alterar o RDD padrão para trabalhar com a SQL LIB.

Veja um exemplo simples de um programa tradicional em DBF e o mesmo com o uso da SQL LIB como fica:
 
// Com DBF:
FUNCTION MAIN
USE PRODUTOS.DBF ALIAS PROD
SET INDEX TO CODPROD, DESCPROD

DO WHILE !EOF()
   ? CODIGO, DESCRICAO, VALOR
   SKIP
ENDDO

CLOSE PRODUTOS
RETURN

// Com SQL LIB:
#include "sqllib.ch"
REQUEST SQLLIB
REQUEST MySQL

FUNCTION MAIN

SQL CONNECT ON "localhost";
   PORT 3306 ;
   DATABASE "teste" ;
   USER "root" ;
   PASSWORD '';
   LIB 'MySQL'

RDDSETDEFAULT('MySQL')

USE PRODUTOS.DBF ALIAS PROD 
SET INDEX TO CODPROD, DESCPROD

DO WHILE !EOF()
   ? CODIGO, DESCRICAO, VALOR
   SKIP
ENDDO

CLOSE PRODUTOS
RETURN
 
Apenas as alterações destacadas no código acima são suficientes para se trabalhar com qualquer banco SQL suportado com a SQL LIB.
   
Ainda será necessário reindexar minhas tabelas?
 
Sim, ao trabalhar com base de dados SQL ainda será necessário indexar suas tabelas de dados e abri-los com SET INDEX para poder efetuar os SEEKs necessários.

A grande diferença reside no fato de que base de dados em SQL são muito mais estáveis e devido à isto elas não exigem reindexação constante. É muito comum inclusive, que em servidores SQL você reindexe sua base de dados apenas uma vez (geralmente no ato da instalação do sistema) e depois trabalhe normalmente sem preocupação de encontrar corrupção de índices ou dados.
   
Será necessário distribuir algum arquivo adicional com meu programa?
 
Sim, será necessário apenas a DLL cliente para acessar o servidor SQL. Este arquivo é requerido pelo próprio servidor SQL e é obrigatório. Como exemplo podemos citar o fato de que todos os aplicativos clientes que acessam o servidor MySQL necessitam de ter o arquivo LibMySQL.DLL instalado em seu sistema. Este é o unico arquivo que vc terá que enviar junto com o seu sistema.
 
OBS: Recomendamos que sempre copie a DLL cliente para a mesma pasta de instalação de seu aplicativo. Isto evitará problemas com DLLs de versões diferentes instaladas na mesma máquina onde seu aplicativo será executado.
   
Posso trabalhar com tabelas em DBF e SQL no mesmo aplicativo?
 
Sim, você pode programar acessando dados de tabelas em SQL e de arquivos DBF. Inclusive você pode relacionar tabelas de origens diferentes, efetuar pesquisas e até filtros em tabelas usando diferentes RDDs.

Veja um exemplo completo mostrando os detalhes envolvidos:
 
// Com SQL LIB:
#include "sqllib.ch"
REQUEST SQLLIB
REQUEST MySQL

FUNCTION MAIN

SQL CONNECT ON "localhost";
   PORT 3306 ;
   DATABASE "teste" ;
   USER "root" ;
   PASSWORD '';
   LIB 'MySQL'

* Abrimos o arquivo usando a SQL LIB
USE PEDIDOS.DBF VIA 'MySQL'
INDEX ON NUMPED TO NUMPED
* Abrimos o arquivo usando o RDD padrão: USE CLIENTES.DBF
INDEX ON CODIGO TO CODCLI
* Procuramos no DBF por um registro específico SEEK 02101914
* Selecionamos o alias da SQL LIB e procuramos o * primeiro pedido com o mesmo código do cliente!
SELECT PEDIDOS
SET ORDER TO
01
SEEK CLIENTES->CODIGO

DO WHILE !Eof() ? NUMPED, PEDVAL, CLIENTES->NOME SKIP ENDDO


CLOSE ALL
Posso armazenar os dados das minhas tabelas em um site?
 
Sim, pois a SQL LIB permite que você acesse os dados de um servidor SQL hospedado em qualquer lugar do mundo - seja na sua rede interna, em um data center ou até mesmo em um servidor de hospedagem.

Para isto, basta informar os dados para acesso externo fornecidos pelo administrador da rede (ou do seu site) no comando SQL CONNECT. É este comando que efetua a conexão entre o seu aplicativo e a base de dados - eis um exemplo:
 
SQL CONNECT ON "www.wbnet.com.br";
   PORT 3306 ;
   DATABASE "sql_teste" ;
   USER "root" ;
   PASSWORD ';
   LIB 'MySQL'
 
Realmente é um processo bem simples, porém se você pretende hospedar os seus dados em um local externo ao da sua rede, é importante que você saiba que a maioria dos provedores não aceitam este tipo de conexão e possuem bloqueio de IP ou bloqueio de portas - o que impede o acesso externo à suas base de dados por ferramentas de terceiros.
   
Eu consigo armazenar um arquivo de foto ou documento dentro duma tabela?
 
Sim! Utilizando base de dados SQL é possível guardar qualquer tipo de dados dentro de um campo MEMO. Tradicionalmente em Clipper estes campos possuem o limite de 64KB, porém, em base de dados SQL existe a possibilidade de se armazenar até 4GB de informação em um único campo!
 
* Para gravar os dados de um arquivo (.BMP, .DOC, .CDR, etc)
REPLACE CAMPO_MEMO WITH ANY2SQL( MemoRead( 'c:\arquivo.bmp' )) * Para gravar um arquivo com o conteudo
* original salvo na base de dados:

MemoWrit( 'c:\arquivo2.bmp', FIELD->CAMPO_MEMO )
Como substituir a função FILE()?
 
A função FILE() se torna obsoleta em ambiente SQL devido ao fato que os arquivos não se encontram fisicamente no mesmo computador onde o seu aplicativo reside e portanto, não há uma maneira tradicional de se determinar a existência de um arquivo ou de um índice dentro do banco de dados com o uso de FILE().

Devido à isto a SQL LIB traz consigo 2 novas funções: TABLE() e INDEX() que informam se uma determinada tabela ou índice existem no banco de dados atual. Veja um exemplo de como converter uma rotina usando estas 2 funções:
 
// Com DBF:
FUNCTION MAIN

IF !FILE( 'PRODUTOS.DBF' )
   ALERT( 'ARQUIVO DE PRODUTOS'+;
'NAO EXISTE!') QUIT ENDIF USE PRODUTOS.DBF IF !FILE( 'CODPROD.NTX' ) INDEX ON CODIGO TO ; CODPROD.NTX ENDIF IF !FILE( DESCPROD.NTX' ) INDEX ON DESCRICAO ; TO DESCPROD.NTX ENDIF SET INDEX TO CODPROD, DESCPROD ....
// Com SQL LIB:
#include "sqllib.ch"
REQUEST SQLLIB
REQUEST MySQL

FUNCTION MAIN

SQL CONNECT;
   ON "localhost";
   PORT 3306 ;
   DATABASE "teste" ;
   USER "root" ;
   PASSWORD '';
   LIB 'MySQL'

RDDSETDEFAULT('MySQL')
USE PRODUTOS.DBF

IF !INDEX( 'CODPROD.NTX' )
   INDEX ON CODIGO ;
         TO CODPROD.NTX
ENDIF

IF !INDEX( 'DESCPROD.NTX' )
   INDEX ON DESCRICAO;
         TO DESCPROD.NTX
ENDIF

SET INDEX ;
    TO CODPROD, DESCPROD

...
   
Como ocultar a mensagem de erro, para um conexão não sucedida?
 
Sim, para isto basta utilizar o parâmetro SQL_NO_WARNING na opção OPTIONS do comando SQL CONNECT e testar o resultado com as funções SQL_ERRORNO() ou SQL_ERRORMSG().

Eis um exemplo logo abaixo demonstrando como utilizar estes recursos:
SQL CONNECT ON "localhost" ;
    PORT 3306 ;
    DATABASE "teste" ;
    USER "root" ;
    PASSWORD ""_ ;
    OPTIONS SQL_NO_WARNING ;
    LIB "MySql"

IF SQL_ErrorNO() > 0
   Alert( "Não foi possível conectar ao banco de dados !;"+;
          "Informe esta mensagem ao suporte : ;"+;
   SQL_ErrorMsg() )
   Return( .F. )
ENDIF
 
     
 

Caso necessite de maiores informações sobre nossos produtos ou ferramentas, entre em contato conosco visitando nossa página de contato.
 
     
   
Design desenvolvido por Vailton Renato, Copyright © 2003-2008 WebNet do Brasil Ltda. Todos os direitos são reservados.
Todas as marcas mencionadas neste site são de propriedade de seus respectivos detentores. Saiba mais clicando aqui.