Página 1 de 3

Acessar base de dados

Enviado: 08 Mar 2019 18:40
por Amparo
Ola amigos

Tenho um sistema feito em harbour com tabelas DBF e CDX, o sistema esta instalado em um servidor no modo grupo de trabalho, existe um mapeamento onde nas estações de trabalho só tem o atalho da aplicação, gostaria de saber se existe alguma forma de acessar estes DBF de fora da empresa utilizando a internet dentro de uma pafina feita em php ou outra qualquer em html? Ou seja quero abrir um navegador qualquer entrar na minha pagina e acessar a aplicação que esta em uma empresa X

Desde de ja agradeco.

Acessar base de dados

Enviado: 08 Mar 2019 20:13
por Nascimento
amigo sim tem, o letodbf faz isso, no momento ainda estou estudando ele, estou catando informações contidas aqui no forum e tambem em um forum russo
ja comecei a ter alguns exitos , porém ainda tenho algumas duvidas, mais vamos em frente!!

Acessar base de dados

Enviado: 09 Mar 2019 07:56
por Amparo
ola amigos

Nascimento obrigado por responder

na postagem eu coloquei
Amparo escreveu:entrar na minha pagina e acessar a aplicação que esta em uma empresa X
mas na verdade é acessar a base de dados.

qual é a ideia: gostaria que meus clientes entrassem um minha pagina na seção de pedido para comprarem determinados produtos que vendo, não é e-commerce, é simplesmente uma pagina onde ira informar seus dados, produtos e a quantidade desejada, gravar na tabela de pedido para o pessoal interno fazer a analise e processa-lo.

como imagino: ao acessar a página em pedido o cliente entra com o CNPJ ou CPF faz a consulta se já existe ou não, não existindo abre tela para cadastrar seus dados e depois abre a tela para incluir os produtos, neste caso devera assumir o preço que esta na tabela de produtos, se o cliente já fez alguma compra devera trazer o preço pago na ultima venda.

basicamente é isso

sou de SP Capital, se tiver interesse em desenvolver a aplicação por favor entre em contato.

desde ja agradeço

abraço a todos

Acessar base de dados

Enviado: 09 Mar 2019 08:37
por fladimir
Não tenho isso rodando mas se não me engano com CGI é possível

Fora isso outra alternativa seria vc criar um webservice nesse servidor q tem a base DBF comunicando com a web, mas não sei como seria criar webservice em Harbour, teria q ser via outra linguagem.
Tenho isso em Mobile, tenho um webservice no servidor do meu cliente e meu app mobile acessa esse webservice requisitando informações dos DBFs, mas não em Harbour.

Acessar base de dados

Enviado: 09 Mar 2019 09:54
por Poka
Amparo, bom dia.

O que vou perguntar não tem nada a ver com o que vc está querendo. Tenho sistema em harbour e cdx tambem. vc tem problemas com lentidão em relatorios?
Estou mudado para firebird, mas vai demorar um pouco ainda. Onde está instalado os sistema é instantâneo, mas nos terminais é muito lento. que rede vc tem.
poderia me informar?

Grato

Poka

Acessar base de dados

Enviado: 09 Mar 2019 11:23
por Itamar M. Lins Jr.
Ola!
Não precisa do PHP, o Harbour faz isso sem precisar do PHP.
Tenho alguns projetos desenvolvidos, mas preciso mudar o provedor aqui etc... para que os senhores vejam como não é assim "tão complicado" desenvolver aplicações WEB com Harbour.
PHP para acessar DBF fica mais complicado na minha opinião. Inclusive o Harbour compila o .PRG coisa que o PHP não faz.

Saudações,
Itamar M. Lins Jr.

Acessar base de dados

Enviado: 09 Mar 2019 13:21
por MSDN
Itamar, não precisa postar código fonte, só gostaria de saber o que usa/precisa, mais ou menos assim :

1 - Harbour
2 - aaaaa
3 - bbbbb
4 - etc....

ou então :

- vá na pasta XXXXXX que tem tudo lá

Abraços

Acessar base de dados

Enviado: 09 Mar 2019 15:10
por Itamar M. Lins Jr.
Ola!

1-Harbour
2-Apache
Entender como pegar as variáveis da pagina em HTML do lado do servidor. Pode ser via PHP, Harbour, Perl, Python...

https://pctoledo.org/forum/viewto ... 85#p125626
Ou o próprio servidor HTTP feito com o Harbour.
https://dbtopas.lt/hrb/uhttpd-0.4.zip

Procure no Harbour pelo uHttpd, e outros nomes que tem, eshop.prg no 3.4 é a mesma coisa só que tudo compilado embutido na aplicação.

https://github.com/harbour/core/blob/ma ... uhttpd.prg

Saudações,
Itamar M. Lins Jr.

Acessar base de dados

Enviado: 09 Mar 2019 17:47
por Amparo
ola amigos

boa tarde Itamar

eu estava tentando usar o letodb mas até quando escrevo não consegui sucesso.

baixei o letodb, instalei, ativei o serviço, verifico em serviço e esta funcionando, liberei no firewall (cheguei ate desativar o firewall do Windows) liberei porta no roteador e tudo mais, montei os exemplo que vc postou compilei em harbour e deram vários erros, montei Harbour MiniGUI Extended Edition 18.10 (Update 1) e deu erro
procurei algum programa compilado e achei um tal de MANEGE mas quando coloco o IP 127.0.0.1 ou localhost aparece mensagem NO CONECT, como é um executável não da pra saber exatamente o que esta fazendo.

abaixo mostro os erros encontrados para compilar um exe para conctar o letodb em harbour

Código: Selecionar todos

C:\FONTES\HARBOUR\letodb>compile

C:\FONTES\HARBOUR\letodb>C:\HB32\BIN\HBMK2 TESTEDB.HBP
hbmk2[TESTEDB]: Atenção: Arquivo de saída não portável "Non-portable":
                '-oTESTEDB.EXE' in TESTEDB.HBP:7. Excluindo '.EXE' estensão.
hbmk2: Linkando... TESTEDB.EXE
c:/hb32/comp/mingw/bin/../lib/gcc/mingw32/4.6.1-dw2/../../../../mingw32/bin/ld.exe: cannot find -llibrddleto
collect2: ld returned 1 exit status
hbmk2[TESTEDB]: Erro: Executando linkeditor. 1
C:\HB32\comp\mingw\bin\gcc.exe .hbmk/win/mingw/TESTEDB.o .hbmk/win/mingw/_hbmkaut_TESTEDB.o    -mconsole -Wl,--start-group -lhbct -lxhb -lhbwin -lhbnf -llibrddleto -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainstd -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib   -Wl,--end-group -oTESTEDB.EXE  -LC:/HB32/lib/win/mingw

C:\FONTES\HARBOUR\letodb>
o compile acima nada mais é que uma bat = C:\HB32\BIN\HBMK2 TESTEDB.HBP


como esta meu arquivo TESTEDB.HBP

Código: Selecionar todos

-lhbct
-inc
-lxhb 
-lhbwin
-lhbnf

-oTESTEDB.EXE

TESTEDB.PRG


TESTELETODB.HBC
como esta meu arquivo TESTELETODB.HBC

Código: Selecionar todos

{win}incpaths=c:\letodb\include;
{win}libpaths=c:\letodb\lib;
 
{win}libs=librddleto
e por fim como esta meu TESTEDB.PRG

Código: Selecionar todos

*#require "sddodbc" //opcional se for usar MySql com LetoDb
*#require "sddfb"  //opcional se for usar Firebird com Letodb
#include "rddleto.ch"
	 
REQUEST DBFCDX, DBFFPT, DBFDBT, LETO
REQUEST HB_LANG_PT, HB_CODEPAGE_PTISO, HB_CODEPAGE_PT850
	 
* REQUEST  SQLMIX, SDDODBC //opcional se for usar MySQL ou Firebird etc...
 
Function Main
Local cPATH := "//localhost:2812/" //não precisa informar o caminho dos DBF´s porque já foi informado(configurado) no arquivo leotdb.ini
 
//Conectando com o servidor LetoDb.
 
      nConect := leto_Connect( cPath)
      IF nConect == -1
          nRes := leto_Connect_Err()
         IF nRes == LETO_ERR_LOGIN
            alert( "Falha ao Logar" )
         ELSEIF nRes == LETO_ERR_RECV
           alert( "Error ao conectar" )
         ELSEIF nRes == LETO_ERR_SEND
            alert( "Erro de envio" )
         ELSE
            alert( "Não connectado ao servidor: " + cPath )
         ENDIF
         Return .F.
      ENDIF
 
cIndex  := cPATH+"meu_arquivo.cdx"
 
cDbf := cPATH+"meu_aquivo.dbf"
 
DbUseArea(.t.,'LETO',cDbf,"alias_xyz",.T.,.F.,'PTISO')
If leto_file(cIndex)
   DBSETINDEX( cIndex )
Else
*   index on ...//seu código
*   index on ... //seu código
EndIf

return


agora o erro em Harbour MiniGUI Extended Edition 18.10 (Update 1)

Código: Selecionar todos

C:\FONTES\MINIGUI\LETODB>compile

C:\FONTES\MINIGUI\LETODB>call c:\MiniGuI\batch\compile.bat MAIN
Harbour 3.2.0dev (r1809141336)
Copyright (c) 1999-2018, https://harbour.github.io/
Compiling 'MAIN.prg'...
Lines 22145, Functions/Procedures 2
Generating C source output to 'MAIN.c'... Done.
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
MAIN.c:
Borland Resource Compiler  Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation.  All rights reserved.
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_LETO_CONNECT' referenced from C:\FONTES\MINIGUI\LETODB\MAIN.OBJ
Error: Unresolved external '_HB_FUN_LETO' referenced from C:\FONTES\MINIGUI\LETODB\MAIN.OBJ

Link error.

Pressione qualquer tecla para continuar. . .

o compile.bat

Código: Selecionar todos

call c:\MiniGuI\batch\compile.bat MAIN %1 %2 %3 %4 %5 %6 %7 %8 %9
o main.prg

Código: Selecionar todos

#include <minigui.ch>

FUNCTION Main()


 Load Window Main
        Main.Center
       Main.Activate
   
return

function iniciar()
   LOCAL cServer:='//mariculturamzt.serveftp.com:2812/'
   REQUEST LETO
   RDDSETDEFAULT("LETO")

   IF Leto_Connect(cServer)==-1
      MSG('No hay conexion con el servidor '+cServer)
      RETURN NIL
   ELSE
      MSG('Servidor a la escucha en '+cServer)
   ENDIF
   DBCreate( cServer+'prueba1',{;                         //Creamos la tabla en el servidor
                                 {'Campo1','N',  3,0},;
                                 {'Campo2','C', 15,0},;
                                 {'Fecha' ,'D',  8,0};
                               })


   DBUseArea(.T.,,cServer+'prueba1','Prueba1')  //Abrimos la tabla
   //Tabien puede usarse el comando USE ( cServer+'prueba1' ) New
   INDEX ON Campo1 TAG Campo1    //Creamos indice
   //--
   FOR i:=1 TO 100              //Creamos 100 registros
      Prueba1->(RLock())        //y grabamos información en los campos
      Prueba1->(DBAppend())
      Prueba1->Campo1:= i
      Prueba1->Campo2:= 'Registro '+Str(i,3)
      Prueba1->Fecha := Date()
      Prueba1->(DBUnlock())
   NEXT
   Prueba1->(DBSeek(50))
   MSG(Prueba1->Campo2)
	edit extended workarea prueba1
   Prueba1->(DBCloseArea())
RETURN NIL
#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"

HB_FUNC(  MSG )
{
   MessageBox( GetActiveWindow(), hb_parc(1), "Ok", 0 );
}
#pragma ENDDUMP

o main.fmg

Código: Selecionar todos

* Harbour MiniGUI IDE Two-Way Form Designer Generated Code
* (c)2004-2009 Roberto Lopez <harbourminigui@gmail.com>
* http://harbourminigui.googlepages.com

DEFINE WINDOW TEMPLATE AT 138 , 235 WIDTH 550 HEIGHT 350 VIRTUAL WIDTH Nil VIRTUAL HEIGHT Nil TITLE "" ICON NIL MAIN CURSOR NIL ON INIT iniciar() ON RELEASE Nil ON INTERACTIVECLOSE Nil ON MOUSECLICK Nil ON MOUSEDRAG Nil ON MOUSEMOVE Nil ON SIZE Nil ON MAXIMIZE Nil ON MINIMIZE Nil ON PAINT Nil BACKCOLOR Nil NOTIFYICON NIL NOTIFYTOOLTIP NIL ON NOTIFYCLICK Nil ON GOTFOCUS Nil ON LOSTFOCUS Nil ON SCROLLUP Nil ON SCROLLDOWN Nil ON SCROLLLEFT Nil ON SCROLLRIGHT Nil ON HSCROLLBOX Nil ON VSCROLLBOX Nil

    DEFINE LABEL Label_1
        ROW    10
        COL    30
        WIDTH  470
        HEIGHT 60
        VALUE "LETODB WITH MINIGUI"
        FONTNAME "Arial"
        FONTSIZE 24
        TOOLTIP ""
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        HELPID Nil
        VISIBLE .T.
        TRANSPARENT .F.
        ACTION Nil
        AUTOSIZE .F.
        BACKCOLOR Nil
        FONTCOLOR Nil
        CENTERALIGN .T. 
    END LABEL

    DEFINE BUTTON Button_1
        ROW    120
        COL    190
        WIDTH  100
        HEIGHT 28
        ACTION THISWINDOW.RELEASE
        CAPTION "EXIT"
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP ""
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        HELPID Nil
        FLAT .F.
        TABSTOP .T.
        VISIBLE .T.
        TRANSPARENT .F.
        MULTILINE .F.
        PICTURE Nil
    END BUTTON

    DEFINE HYPERLINK HyperLink_1
        ROW    260
        COL    140
        WIDTH  230
        HEIGHT 28
        VALUE "http://bielsys.blogspot.com/2008/07/letodb-rdd-cliente-servidor-para.html"
        ADDRESS "http://bielsys.blogspot.com/2008/07/letodb-rdd-cliente-servidor-para.html"
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP ""
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        AUTOSIZE .F.
        HELPID Nil
        VISIBLE .T.
        HANDCURSOR .F.
        BACKCOLOR Nil
        FONTCOLOR Nil
    END HYPERLINK

    DEFINE LABEL Label_2
        ROW    180
        COL    30
        WIDTH  480
        HEIGHT 60
        VALUE "Sample based in next url adapted to Minigui"
        FONTNAME "Arial"
        FONTSIZE 15
        TOOLTIP ""
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        HELPID Nil
        VISIBLE .T.
        TRANSPARENT .F.
        ACTION Nil
        AUTOSIZE .F.
        BACKCOLOR Nil
        FONTCOLOR Nil
        CENTERALIGN .T. 
    END LABEL

END WINDOW


pode ser ate coisa simples de resolver mais já bati a cabeça o dia inteiro tentando descobrir e nada.

obrigado a todos

abraço

Acessar base de dados

Enviado: 10 Mar 2019 07:33
por Amparo
ola amigos

Eric, estou estudando a mudança para SQL mas ainda vai demorar um pouco, pode me passar o contato no endereço amparo.diomedes@yahoo.com.br preciso de uma solução um pouco mais rápida, e obrigado por responder.

abraços
Amparo

Acessar base de dados

Enviado: 10 Mar 2019 07:49
por Itamar M. Lins Jr.
Ola!
gostaria de saber se existe alguma forma de acessar estes DBF de fora da empresa utilizando a internet dentro de uma pafina feita em php ou outra qualquer em html?
Vc perguntou sobre isso ai em cima. Depois postou códigos querendo usar LetoDb.
Sobre o que postei vc mudou tudo.
Como está sua "PAGINA feita em PHP ou outra qualquer em HTML" ?
Não embola as perguntas por favor.
LetoDB é para outra situação.

Saudações,
Itamar M. Lins Jr.

Acessar base de dados

Enviado: 11 Mar 2019 11:36
por Amparo
ola amigos

bom dia a todos

bom dia Itamar, sim postei sobre abrir a base de dados via navegador internet, mas vi algumas postagem sobre o letodb e fiquei interessado no funcionamento por isso comecei a fazer teste e coloquei o código ai, me desculpe se misturei uma coisa com outra, mas para mim na logica os dois estariam fazendo o que eu preciso, claro que de forma diferente pois no navegador teria um link para abrir uma pagina para inserção dos dados, em letodb seria um aplicativo instalado no computador fora da empresa acessando os dados.

Não tenho pagina em PHP nem menos em outra linguagem não desenvolvo.
Itamar M. Lins Jr. escreveu:LetoDB é para outra situação
com o letodb eu não consigo acessar uma base de outro local fora da empresa? se for isso realmente o foco da conversa sera somente acessar via navegador.

com relação aos erros que mencionei sobre compilar um prg para usar o leto eu consegui resolver, não sei porque mas o leto.lib estava corrompido refiz e funcionou, agora estou usando o letodb na maquina local, vou tentar agora o uso fora da empresa.

abraço

Acessar base de dados

Enviado: 11 Mar 2019 12:18
por Amparo
ola amigos

montei um programa para usar o letodb em Harbour MiniGUI Extended Edition 18.10 (Update 1)

Usando LOCAL cPath := "//127.0.0.1:2812/" ou "//LOCALHOST:2812/" consigo fazer consulta na minha tabela sem problema, agora quando mudo para usar por exemplo LOCAL cPath := "//tal_ip:2812/" o sistema faz a conexão mas na linha de comando:

DbUseArea(.t.,'LETO',CDBF,"clientes",.T.,.F.,'PTISO')
ou
USE ( cPath+"clientes" ) New

o programa fecha e aparece a tela que o DBLETO.EXE parou de funcionar ( um problema fez com que o programa parasse de funcionar...)

na duvida troquei o dbusearea e coloquei o comando abaixo mas da o mesmo erro:
dbCreate( cPath+"amparodb", { {"NOME","C",10,0}, {"NUMERO","N",4,0}, {"DESCRICAO","C",40,0}, {"DATA","D",8,0} } )

o que esta faltando nos comando abaixo?

Código: Selecionar todos

function iniciar()

LOCAL cPath := "//000.00.000.00:2812/"

LOCAL QUEBRA := Chr(13)+Chr(10)
 
REQUEST LETO
RDDSETDEFAULT( "LETO" )

nConect := leto_Connect( cPath)

IF nConect == -1
   nRes := leto_Connect_Err()

   IF nRes == LETO_ERR_LOGIN
      MSGINFO( "Falha ao Logar" )
   ELSEIF nRes == LETO_ERR_RECV
      MSGINFO( "Error ao conectar" )
   ELSEIF nRes == LETO_ERR_SEND
     MSGINFO( "Erro de envio" )
   ELSE
     MSGINFO( "Não connectado ao servidor: " + cPath )
   ENDIF

   Return .F.
ELSE
   MSGINFO("CONCETADO")
ENDIF

DbUseArea(.t.,'LETO',CDBF,"clientes",.T.,.F.,'PTISO')                     **** AQUI FECHA A APLICAÇÃO ***

...
...
...

return

Obrigado

abraço a todos

Acessar base de dados

Enviado: 11 Mar 2019 14:42
por Itamar M. Lins Jr.
Ola!
mas para mim na logica os dois estariam fazendo o que eu preciso, claro que de forma diferente pois no navegador teria um link para abrir uma pagina para inserção dos dados,
Não. O navegador não usa Letodb. Usa, conversa com o APACHE/ISS...
O letodb quem usa são os programas criados pelo Harbour.
Se ainda deseja disponibilizar uma pagina de pedido, terá que aprender instalar e configurar o APACHE. E noções básicas em HTML.
Ou fazer um programa em Harbour e disponibilizar ele na internet para seus clientes baixarem, para assim ele(programa em Harbour) usando o Letodb, acessar seus DBF´s.
Mesmo assim a velocidade, nem se compara com Apache + HTML.

Saudações,
Itamar M. Lins Jr.

Acessar base de dados

Enviado: 11 Mar 2019 16:13
por Amparo
ola amigos
Itamar M. Lins Jr escreveu:Não. O navegador não usa Letodb. Usa, conversa com o APACHE/ISS..
Itamar, isso eu entendi, por isso que postei o código que estou montando para fazer os testes com o letodb.
Itamar M. Lins Jr. escreveu:Mesmo assim a velocidade, nem se compara com Apache + HTML.
no quesito velocidade acredito não ser problema porque o cliente vai entrar apenas 1 vez por mês para fazer o pedido, então creio que não levara muito tempo para ele colocar 1, 3 , 7 ou 50 itens no pedido.

quanto a funcionalidade do letodb é que estou em duvida e tentando resolver, por exemplo consegui fazer uma conexão dei NET STOP ... e depois NET START o erro dizendo que o sistema travou não acorreu mais, fiz até uma consulta no cadastro de cliente.

Só que, quando fui fazer a consulta novamente com o pessoal (-/+ 10 pessoas) usando o sistema em produção, da erro dizendo que a alias "CLIENTES" não esta em uso, isso acontece também na maquina local.

Error DBCMD/2001 Workarea nÆo est em uso: ORDLISTADD

ou seja o pessoal utiliza um sistema feito em harbour onde a abertura das tabelas é feita desta forma:

Código: Selecionar todos

DBUseArea( .T., RTrim( F_ILES->FI_RDD ), cPath + RTrim( F_ILES->FI_DBF ), RTrim( F_ILES->FI_ALIAS ), .F. )
já tentei mudar para: e nada

Código: Selecionar todos

 DBUseArea( .T., RTrim( F_ILES->FI_RDD ), cPath + RTrim( F_ILES->FI_DBF ), RTrim( F_ILES->FI_ALIAS ), .T. )
abraço