Preview only show first 10 pages with watermark. For full document please download

Visual Foxpro - Um Aplicativo Vfp-sql Server Do Início Ao Fim - Parte 03

VFP acessando banco de dados remoto.

   EMBED


Share

Transcript

iMasters - Por uma Internet mais criativa e dinâmica Página 1 Frederico Tomazzeti Segunda-feira, 31 de julho de 2006 Um aplicativo VFP/SQL SERVER do início ao fim - Parte 03 No segundo artigo criamos os domínios, o modelo físico e o banco de dados. Agora, vamos fazer um processo que servirá para aprendermos um pouco sobre o Enterprise Manager e sobre engenharia reversa entre o SQL Server e o Erwin. Vamos criar uma tabela no SQL Server e trazê-la para o Erwin. Poderíamos fazer o contrário, ou seja, criar a nova entidade no Erwin e transportá-la ao nosso banco já existente, vou mostrar a primeira situação pois é a mais comum quando você pega um banco já pronto para analisar e fazer a sua manutenção. Quando projeto um banco de dados, na maioria das vezes, eu crio uma tabela apenas para controlar a contagem sequencial de chaves primárias. Utilizo uma sequência única para todas as tabelas, não gosto de utilizar as propriedades de auto-numeração do SQL Server. Veja que isso é uma opção pessoal, não quer dizer que seja a melhor ou a pior forma de trabalho. A vantagem que vejo neste sistema é que jamais haverá uma repetição de valor em uma chave primária e, como já sabemos, chave primária não deve ser exibida ao usuário do sistema. Quando o usuário me pede para que tenha um código de cliente ou uma numeração de pedido, aí então eu crio um contador específico para aquela tabela, utilizando o recurso de auto-numeração se for o caso, mas é apenas para uso do operador do sistema, as chaves reais de amarração das tabelas são sequenciais e não diponíveis ao usuário final. É mais seguro. O Enterprise Manager Figura 01 - Este é o Enterprise Manager. Observe as nossas tabelas na pasta "Tables" http://imasters.uol.com.br/artigo/4463/visual_foxpro/um_aplicativo_vfpsql_server_do_inicio_ao_fim_parte_03/imprimir/ 9/28/2010 4:17:41 PM iMasters - Por uma Internet mais criativa e dinâmica Página 2 Figura 02 Vamos criar uma tabela chamada CONTADOR, que terá um campo chamado IdUnico do tipo "Identificador", é bastante simples: clique na pasta TABLES e depois no ícone "NEW" Figura 03 Figura 04 Vamos criar um procedimento armazenado para fazer o contador de "mais um" para nossa tabela. Isso poderia ser feito através de código no VFP, mas já podemos atribuir esta função ao banco de dados, ou seja isso já é um pouco da metodologia "cliente/servidor" http://imasters.uol.com.br/artigo/4463/visual_foxpro/um_aplicativo_vfpsql_server_do_inicio_ao_fim_parte_03/imprimir/ 9/28/2010 4:17:41 PM iMasters - Por uma Internet mais criativa e dinâmica Página 3 Figura 05 - O processo é semelhante a criação da Tabela. Clique na pasta Stored Procedure e clique no ícone "NEW". Na caixa de diálogo, coloque o código abaixo: CREATE PROCEDURE ObterNovoID AS DECLARE @nnId int BEGIN TRANSACTION SELECT @nnId = IDunico FROM contador (HOLDLOCK) IF NOT (@@rowcount = 1) BEGIN INSERT INTO contador (IdUnico) values (1) select @nnId = 1 END UPDATE contador SET IdUnico = @nnId + 1 COMMIT TRANSACTION SELECT @nnId as IdUnico GO Figura 06 - Verifique a sintaxe clicando em Check Sintax e depois em OK para confirmar. Para verificar se o contador está realmente funcionando, abra o query analyzer e execute este comando no nosso banco: EXEC ObterNovoID Levando as alterações para nossa modelagem Veja agora como está nossa tela de comparação do banco de dados com a modelagem: http://imasters.uol.com.br/artigo/4463/visual_foxpro/um_aplicativo_vfpsql_server_do_inicio_ao_fim_parte_03/imprimir/ 9/28/2010 4:17:41 PM iMasters - Por uma Internet mais criativa e dinâmica Página 4 Figura 07 Para transferir nossas alterações para a modelagem, clique na linha que apresenta a diferença e clique no botão Import. Observe que uma seta amarela marcará o que será importado. Clique no botão "Next" e... Figura 08 - Clique em Start Import... Figura 09 - Aqui está o Procedimento para o contador e... http://imasters.uol.com.br/artigo/4463/visual_foxpro/um_aplicativo_vfpsql_server_do_inicio_ao_fim_parte_03/imprimir/ 9/28/2010 4:17:41 PM iMasters - Por uma Internet mais criativa e dinâmica Página 5 Figura 10 - ...a tabela CONTADOR. Conversando com o Visual FoxPro Se você sempre trabalhou apenas com o Visual FoxPro, o que você viu até aqui é pura novidade, pois o VFP possui uma banco de dados próprio que não exige tanta coisa assim. Porém, estamos trabalhando com outro banco, bem mais robusto que o banco do VFP e as técnicas até aqui estudadas servirão para trabalhar com qualquer outro banco. Para que o Visual FoxPro consiga "conversar" com o SQL Server, existem alguns métodos, tais como ODBC/View remota, OLEDB/ADO, entre outros. Para este artigo vou utilizar OLEDB/ADO. A conexão entre o aplicativo e o banco de dados é dada através de uma string de conexão. Para obtermos rapidamente esta string existe um pequeno "truque" que consiste em criar um arquivo TXT em qualquer diretório de seu disco, renomear este arquivo para uma extensão UDL e executar o arquivo. Figura 11 - Veja a tela do arquivo UDL, informe o tipo de conexão. http://imasters.uol.com.br/artigo/4463/visual_foxpro/um_aplicativo_vfpsql_server_do_inicio_ao_fim_parte_03/imprimir/ 9/28/2010 4:17:41 PM iMasters - Por uma Internet mais criativa e dinâmica Página 6 Figura 12 Isso é tudo, confirme os dados e edite o arquivo UDL com o NOTEPAD do Windows, lá estará sua string de conexão pronta para ser utilizada, abra finalmente o Visual FoxPro e crie um PRG com o seguinte código: LOCAL lcStringCon as string, oCon as Custom lcStringCon = "Provider=SQLOLEDB.1;" "Password=utmag;" "Persist Security Info=True;" "User ID=ftomazetti;" "Initial Catalog=UTMAG;" "Data Source=servidor" oCon = CREATEOBJECT("adodb.connection") oCon.open(lcStringCon) +; +; +; +; +; Utilize obviamente a string de conexão gerada pelo seu arquivo UDL, pois ele possui a senha correta do seu banco. Você criou um objeto chamado oCon que possui a conexão com o banco de dados. Existem outras formas de conectar-se com o banco sem precisar fixar a senha na string, pode-se criar um form para que o usuário informe o nome e senha, por exemplo, ou ainda poderemos utilizar a conexão integrada ao Windows. Neste caso, é necessário que todas as máquinas que utilizarão o sistema possuam o Windows 2000 (Server ou Professional) ou então Windows NT instalados. A conexão integrada, na minha opinião, é a melhor forma de trabalhar, porém existe o inconveniente de não rodar com Windows 98 ou Windows Me. No próximo artigo, veremos algumas funções de manipulação de dados com OLEDB/ADO e criaremos nossos objetos de conexão e acesso ao banco de dados. Código fonte http://imasters.uol.com.br/artigo/4463/visual_foxpro/um_aplicativo_vfpsql_server_do_inicio_ao_fim_parte_03/imprimir/ 9/28/2010 4:17:41 PM