Tempos atras quando estava produzindo o meu aplicativo de HelpDesk me foi solicitado que minha aplicação tivesse a parte servidora na empresa de HelpDesk e a parte cliente acessada via browser.
Mas o pepino estava em acesso via IP, como eu faria uma pagina acessar o IP do servidor? usando PHP?, usando ASP?.
Para um contato via IP é necessário que as duas pontas enviem os pacotes de dados através de um endereço fixo e uma porta através de dois executáveis.
Mas o problema é que eu queria burlar o esquema de pedir acesso a uma porta e não queria usar na parte cliente nenhum aplicativo que tivesse de ser instalado e executado.
Meu cliente queria o acesso via site.
Criei um Chat usando ASP que seria acessado pelo usuário necessitando de ajuda e criei um executável servidor que recebia via TCP-IP mas tinha de enviar via HTTP pois eu não podia instalar nenhum módulo de conversação no provedor.
Tudo era gravado no servidor em um arquivo .TXT e estava legal, mas não do jeito que eu queria.
Eu queria trabalhar com um banco de dados, mas como acessar através de um browser uma tabela via IP. Pensei no MySQL que pode ser acessado desta forma e eu poderia instala-lo no servidor do HelpDesk e via Chat enviar os dados para o mesmo.
Ainda assim não queria usar HTTP, como gosto do ASP precisava faze-lo conversar com o MySQL e depois de muito pesquisar na NET encontrei o scripts a seguir:
Código: Selecionar todos
<html>
<head>
<title>Result of Database Query</title>
</head>
<body>
<h1>Result of Database Query - ASP/VBScript</h1>
<%
set mydatabase = "dbmrdelivery"
set myuid = "root"
set myconn = server.createobject("adodb.connection")
connection = "driver={MySQL};server=134.220.4.130;uid=demo;database=mydatabase"
myconn.open (connection)
set result = server.createobject("adodb.recordset")
sql = "SELECT * FROM tbcliente WHERE ddd ='034'"
set result = myconn.execute(sql)
if not result.EOF then
response.write("<p>Data for " & mydatabase
response.write("<table border=2><tr><th>Nome<th>DDD<th>Telefone<th>Fax")
while not result.EOF
response.write("<tr><td>" & result("nome"))
response.write("<td>" & result("ddd"))
response.write("<td>" & result("fone"))
response.write("<td>" & result("fonefax"))
result.movenext()
wend
response.write("</table>")
else
response.write("<p>No Entry for " & mydatabase
end if
%>
</p>
</body>
</html>
Mas como sou muito xereta resolvi tentar usar os meios e métodos de acessar um .MDB via ADO e consegui exito com o código abaixo:
Código: Selecionar todos
#include "Fivewin.ch"
FUNCTION MAIN()
LOCAL oRs, oErr
StrDatabase := "c:\teste.mdb"
StrTable := "links"
StrField := "strFrom"
oRs := TOleAuto():New( "ADODB.Recordset" )
oRS:Open( "SELECT * FROM "+StrTable, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+StrDatabase, 1, 3 )
WBrowseRecordSet( oRs, StrField )
oRs:Close()
RETURN NIL
function WBrowseRecordSet( oRs, cStrField )
LOCAL oDlg, oBrw, nRec
DEFINE DIALOG oDlg SIZE 300, 300
@ 0, 0 LISTBOX oBrw FIELDS oRs:Fields( cStrField ):Value;
HEADERS "Cliente";
ON RIGHT CLICK ( nRec := oRs:AbsolutePosition,;
oBrw:Report( "TWBrowse report", .T. ),;
oRs:MoveFirst(),;
oRs:Move( nRec - 1 ) )
oBrw:bLDblClick:= { |nRow,nCol| MsgStop( oRs:Fields( cStrField ):Value ) }
oBrw:bLogicLen := { || oRs:RecordCount }
oBrw:bGoTop := { || oRs:MoveFirst() }
oBrw:bGoBottom := { || oRs:MoveLast() }
oBrw:bSkip := { | nSkip | Skipper( oRs, nSkip ) }
oBrw:cAlias := "ARRAY"
ACTIVATE DIALOG oDlg;
ON INIT oDlg:SetControl( oBrw );
CENTER
// Exemplo de adicao de registro usando os métodos do ADO
oRs:AddNew()
oRs:Fields( cStrField ):Value := "Rochinha"
oRs:Update()
RETURN NIL
STATIC FUNCTION SKIPPER( oRs, nSkip )
LOCAL nRec := oRs:AbsolutePosition
oRs:Move( nSkip )
IF oRs:EOF; oRs:MoveLast(); ENDIF
IF oRs:BOF; oRs:MoveFirst(); ENDIF
RETURN oRs:AbsolutePosition - nRec
Como podem ver eu usei OLE para conectar ao ADO e como o mesmo faz parte do Harbour talvez seja fácil implementar para usar com outra GUI que não a Fivewin, ou seja, é um recurso sem limitação.
E porque tudo isto? porque estamos querendo usar novos BDs em nossos aplicativos mas o caminho é cheio de percalços, bibliotecas e etc e tal.
Precisamos urgente de soluções rápidas...
Quem quizer testar siga em frente, ja plantei a semente.
@braços :?)
