Página 1 de 1

Atualizando .DBF remotamente usando OLE e XMLDOM

Enviado: 24 Mai 2008 00:01
por rochinha
Amiguinhos

O exemplo esta usando Fivewin para compilação, mas o codigo pode ser totalmente transportado para uso com Harbour ou xHarbour sem problemas.

Com xHarbour modifique a chamada TOLEAuto():New() por CreateObject().

O intuito é mostrar uma forma de APPENDar dados em uma tabela .DBF num site remoto usando em conjunto com um script ADP ou PHP. Neste exemplo usei .ASP.

Código: Selecionar todos

#include "fivewin.ch"

Function Main()
   LOCAL loHyperlink := TOLEAuto():New( "Microsoft.XmlHttp" ) 
   //
   set default to "c:\SeuSistema"
   use clientes new shared
   //
   do while .not. eof()
      if !empty(clientes->campo1)
         cURL :=        "http://www.SeuDominio.com.br/salva.asp"
         cURL := cURL + "?campo1="+clientes->campo1
         cURL := cURL + "&campo2="+clientes->campo2
         //
         loHyperlink:Open( "POST", cURL, .F. )
         loHyperlink:Send( "" )
         //
         MsgRun("Adicionei mais um")
      endif
      skip
   enddo
   //
   return nil
Codigo SALVA.ASP

Código: Selecionar todos

<%
    ' Codigo exemplo de salvamento de variaveis via HTTP GET
    ' podendo ou nao ser retornado apenas o valor inteiro. 
    '------------------------------------------------------------
    pos       = instrrev(lcase(request.servervariables("path_translated")),lcase(scriptrelativefolder)& "\" & lcase(formaction))
    db_dir    = left(request.servervariables("path_translated"), pos-1 )
    db        = db_dir & ".\"

    ' Campos Recuperados
    campo1 = replace( request.QueryString("campo1"), "'", "''")
    campo2 = replace( request.QueryString("campo2"), "'", "''")

    set cnn= server.createobject("adodb.connection")
    cnn.open "Driver={Microsoft dBase Driver (*.dbf)};;DBQ="& db &";"
    cnn.execute("INSERT INTO tabela(campo1,campo2)" & _
                          "VALUES ('"&_
                                   campo1&"','"&_
                                   campo2&"')" )
    Set cnn = Nothing 
    Set Mail = Nothing 
%>
Caso desejem fazer o teste via IExplorer basta digitar um comando similar:

Código: Selecionar todos

http://www.SeuDominio.com.br/salva.asp?campo1=DadosNoCampo1&campo2=DadosNoCampo2
Para aqueles que necessitem colocar dados numa tabela na internet para ser visualizada ou capturada sem necessidade de uso de SQL databases, conexões, blablabla.

É uma saida super simples e rapida e para os que usam Clipper e desejem usar um recurso semelhante podem usar os recursos da WAPI(Verifiquem com o Maligno algo a respeito, acho que ja funciona).