Uso de letodb

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
Mas pq ele não lê com a pasta compartilhada e com o caminho completo como via DBFCDX?
Claro que lê.
Vc deve está fazendo alguma coisa errada ai. Pq isso não tem nada a ver com Leto.
O leto não pega a pasta pra si e impede os outros programas de usarem.
Veja se está abrindo e não está fechando para outros programas terem acesso ao arquivo.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Inclusive esta rotina funciona em DBFCDX, já com LETO não.
Amanhã cedo vou dar mais uma testada na função e ver de perto o que pode ser.
Grato
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Boa tarde.
Fiz vários teste e consegui fazer com que DBF, CDX, IDX, ficassem com LETO e as demais extensões fossem vista da forma antiga.
Bom por enquanto deixei assim para seguir em frente nos testes dos módulos.
para separar coloquei no sistema assim.

Código: Selecionar todos

FuncTion MyFile(a) 
Local aRet
If oVIA_RDD=="LETO" .And. My_Texto_Contem(a) //esta verifica se em "a" contem DBF, CDX IDX ai faz com LETO
	aRet:=LETO_FILE(a) 
Else
   aRet:=hb_FileExists(a) 
EndIf
Return aRet
Agora me deparei em dois módulos que não localiza registros com o mesmo problema.
Em DBFCDX funciona perfeitamente e pega os registros corretos, já setado para LETO não acha um item.
Fiz varios teste e nada

Código: Selecionar todos

Static Procedure BalancoZ()
Local o_OK
OpenWindow(07,05,23,75,"..:: BALANÇO "+Right(DtoC(Date()),4)+" - ZERA estoque",,,,,,11,"OURO")
//ShowMessage(,,{"Este processo zera o estoque, portanto","deverá ser efetuado somente no dia de balanço."},0)
ShowWait(,,"Abrindo arquivos...")
NetUseFile("CEMP0000",{"CEMP0000","CEMP0001"},.T.,,,,,,,wD_Instal)

//NetUseFile("CDOC0050",{"CDOC0050"},.T.)
NetUseFile("CEST0100",{"CEST0100","CEST0101"},.T.,,,,,,,wD_Geral) //VELHO GRUPO
NetUseFile("CEST0150",{"CEST0150","CEST0151"},.T.,,,,,,,wD_Geral) 
NetUseFile("CEST0200",{"CEST0200","CEST0201"},.T.,,,,,,,wD_Geral) //VELHO SUBGRUPO

NetUseFile("CEST0110",{"CEST0110","CEST0111","CEST0112"},.T.,,,,,,,wD_Geral) //GRUPO
NetUseFile("CEST0120",{"CEST0120","CEST0121","CEST0122"},.T.,,,,,,,wD_Geral) //SUBGRUPO
NetUseFile("CEST0210",{"CEST0210","CEST0211","CEST0212"},.T.,,,,,,,wD_Geral) //marcas
NetUseFile("CEST0220",{"CEST0220","CEST0221","CEST0222"},.T.,,,,,,,wD_Geral) //MODELOS
NetUseFile("CEST0230",{"CEST0230","CEST0231","CEST0232"},.T.,,,,,,,wD_Geral) //LINHA
NetUseFile("CEST0240",{"CEST0240","CEST0241","CEST0242"},.T.,,,,,,,wD_Geral) //CLASSE

NetUseFile("CEST0300",{"CEST0300","CEST0301","CEST0302","CEST0303","CEST0304"},.T.)
NetUseFile("CEST0700",{"CEST0700","CEST0701","CEST0702","CEST0703"},.T.)  //MOVIMENTO ENTRADA CABEC
NetUseFile("CEST0800",{"CEST0800","CEST0801","CEST0802"},.T.)  //MOVIMENTO ENTRADA ITENS
NetUseFile("CEST0750",{"CEST0750","CEST0751","CEST0752","CEST0753"},.T.)  //MOVIMENTO SADIA CAB
NetUseFile("CEST0850",{"CEST0850","CEST0851","CEST0852"},.T.)  //MOVIMENTO SAIDA ITENS
CloseWindow()
Do While .T. .And. wNetUse=.T.

   NewDrawField(12,06,74,"Dados para o BALANÇO no dia "+DtoC(Date()),10,15)
   
   NewDrawField(13,07,12,"Inicial",7)
   NewDrawField(13,13,18,"Final",7)
   NewDrawField(13,19,74,"",7)

   NewDrawField(16,06,74,"Informações",10,20)
   NewShowLabel(16,06," ",3,"VERMELHO",24,,19,74)
   NewShowLabel(17,06," BALANÇO - Este processo ZERA o estoque, portanto","CENTRAL","VERMELHO",24,,17,74)
   NewShowLabel(18,06," deverá ser efetuado somente no dia de BALANÇO.","CENTRAL","VERMELHO",24,,18,74)
   
   o_Acao:=MyNewButton(22,5,{"&Geral","&Setor","&Marca","&Código","&Abandonar"},75,.T.,.T.,05)
   If LastKey()=27 .Or. o_Acao=5
Exit
   EndIf
   aSetorI:=aSetorF:=Space(4)
	wMarca :=Space(4)
	wMerc  :=Space(7)
   o_Setor:=9
   NewShowLabel(16,06," ",3,"VERMELHO",24,,19,74)
	If o_Acao=2 //setor
      NewShowLabel(16,06," Informe o setor desejado","CENTRAL","VERMELHO",24,,16,74)
      NewShowLabel(17,06," 9-999 processa todos os setores","CENTRAL","VERMELHO",24,,17,74)
      NewShowLabel(18,06," ?-001 a ?-999 processa o setor desejado","CENTRAL","VERMELHO",24,,18,74)
      NewShowLabel(19,06,"  -    a  -    processa somente os setores vazios","CENTRAL","VERMELHO",24,,19,74)
      o_Setor:=MyNewButton(22,3,{"Setor &1","Setor &2","&Abandonar"},75,.T.,.T.,05)
      If LastKey()#27.And.o_Setor<=2
         @ 13,07 Get aSETORI Pict "@R !-999" Valid(ChkRuaCasa(@aSETORI)) //coloquei para todos
         @ 13,13 Get aSETORF Pict "@R !-999" Valid(ChkRuaCasa(@aSETORF).And.Left(aSETORF,1)==Left(aSETORI,1)) //coloquei para todos
         Keyin()
         If LastKey()#27.And.(aSETORI=="9999".Or.aSETORF=="9999")
            o_Acao:=0
            ShowMessage(,,"SETORES - Não é válido todos os SETORES para isto use a opção GERAL",0)
         EndIf
      Else
		   o_Setor:=0   
		EndIf   
	ElseIf o_Acao=3 //marca
      NewDrawField(13,19,74,"Marca    ",7)
	
      NewShowLabel(17,06," Informe a marca desejada para zerar estoque","CENTRAL","VERMELHO",24,,17,74)
      NewShowLabel(18,06," Válido somente a MARCA, não é válido todas as marcas (9999)","CENTRAL","VERMELHO",24,,18,74)
      @ 13,19 Get wMarca Pict "@R 9999" Valid(ChkClassesGerais("MARCAS"   ,"CEST0210",@wMarca,"M",13,24,40))
      Keyin()
   ElseIf o_Acao=4 //código grupo e subgrupo
      NewDrawField(13,19,74,"Produto",7)
      NewShowLabel(17,06," Informe o código desejado para zerar estoque","CENTRAL","VERMELHO",24,,17,74)
      NewShowLabel(18,06," Válido somente GRUPO e/ou SUBGRUPO, exemplo: 0101999 ou 0199999","CENTRAL","VERMELHO",24,,18,74)
      @ 13,19 Get wMerc Pict "@R 9999999" Valid(ChecaMerc("S",13,27,40))
      Keyin()
      If LastKey()#27.And.!(Left(wMerc,4)#"9999".And.Right(wMerc,3)=="999")
         o_Acao:=0
         ShowMessage(,,{"PRODUTO - Opção válida é somente GRUPO e/ou SUBGRUPO","o produto deverá ser obrigatóriamente igual á 999.","Exemplo: 0101999 ou 0199999"},0)
      EndIf
	Else
      NewShowLabel(17,06," Zera o estoque da tabela em geral","CENTRAL","VERMELHO",24,,17,74)
	EndIf

   o_Acao:=If(LastKey()=27.Or.o_Setor=0,0,o_Acao)
	e_Ok:=0
   o_Ok=.F.
   o_EN:=0
	If o_Acao > 0
      ShowWait(,,"Selecionando produtos...")
      Campos:={{"COD_MERC" ,"C",07,0},;
               {"DESCRICAO","C",60,0},;
               {"UNIDADE"  ,"C",04,0},;
               {"SETOR1"   ,"C",04,0},;
               {"SETOR2"   ,"C",04,0},;
               {"ESTOQUE"  ,"N",18,3},;
               {"TICADO"   ,"C",01,0}}
      File1Tmp:=HoraTmp()
      OpenTmp(Campos,"DESCRICAO") //para pesquisar
      NetRelFile("CEST0300","COD_MERC")
      OrdemArq:=" -> ORDEM ALFABETICA"

////O ERRO COMEÇA DAQUI PRA BAIXO QUANDO VAI PESQUISAR

      CEST0300->(DbGoTop())
      If o_Acao=4
         CEST0300->(DbSeek(If(SubStr(wMerc,3,2)=="99",Left(wMerc,2),Left(wMerc,4))),.T.)
      EndIf
      wSaida:=.F.
      While CEST0300->(!Eof()).And.If(o_Acao=4,If(SubStr(wMerc,3,2)=="99",Left(CEST0300->CODIGO,2)==Left(wMerc,2),Left(CEST0300->CODIGO,4)==Left(wMerc,4)),.T.).And.wSaida=.F.
        ShowWaitProc()
        wSaida:=ExitSeek()
        pSETOR:=If(o_Setor=1,"SETOR1","SETOR2")
        
        o_Ok:=If(o_Acao=1,.T.,o_Ok)
        o_Ok:=If(o_Acao=2,If(aSETORI=="9999"   ,.F.,If(aSETORI=="    ",Empty(CEST0300->&pSETOR.),   Left(CEST0300->&pSETOR.,1)  == Left(aSETORI,1).And.;
		                                                                                         Val(Right(CEST0300->&pSETOR.,3)) >= Val(Right(aSETORI,3)).And.;
		  																											   	  Val(Right(CEST0300->&pSETOR.,3)) <= Val(Right(aSETORF,3)))),o_Ok)
        o_Ok:=If(o_Acao=3,If(wMarca =="9999"   ,.F.,CEST0300->MARCA==wMarca),o_Ok)
        o_Ok:=If(o_Acao=4,If(wMerc  =="9999999",.F.,If(SubStr(wMerc,3,2)=="99",Left(CEST0300->CODIGO,2)==Left(wMerc,2),;
		                                                                         Left(CEST0300->CODIGO,4)==Left(wMerc,4))),o_Ok)

		  ShowMessage(,,Str(CEST0300->(Recno()))+" "+ Str(CEST0300->(LastRec())),0) //só pra mostrar no teste, tem mais de 8 mil registros

		  If o_Ok = .T. .And. CEST0300->ATUAL <> 0 //.Or. CEST0300->ATUAL<0// se passou nas condicoes acima e o estoque não é igual a zero 
    		  ShowMessage(,,"peguei 1",0) //só pra mostrar que entrou, pega o registro este e não grava nada abaixo                                                                       
   		  If CEST0300->ATUAL < 0 //SE NEGATIVO
	   	     o_EN++
		     EndIf   

           (File1Tmp)->(DbAppend())
           (File1Tmp)->COD_MERC :=CEST0300->CODIGO
           (File1Tmp)->DESCRICAO:=CEST0300->DESCRICAO
           (File1Tmp)->UNIDADE  :=CEST0300->UNIDADE  
           (File1Tmp)->ESTOQUE  :=CEST0300->ATUAL
           (File1Tmp)->SETOR1   :=CEST0300->SETOR1
           (File1Tmp)->SETOR2   :=CEST0300->SETOR2
           (File1Tmp)->TICADO   :=If(o_Acao=1,">"," ")
        EndIf
        CEST0300->(DbSkip(1)) //vai para o proximo 
		  ShowMessage(,,If(CEST0300->(Eof()),"Fim","nao"),0) //so pra mostra, aqui ele já foi de cara para o final do arquivo
      End
      If (File1Tmp)->(LastRec()>0).And.wSaida=.F.
         ShowWait()
         DbSelectArea(File1Tmp)
         DbGoTop()
         Titulo:="..:: Balanço (Selecione os itens desejados para processar ou todos)"
         NomeCampos:={{"ticado","descricao","unidade","estoque","cod_merc","setor1","setor2"},;
                      {"!","@!","@!","@E 9999,999.999","@R 9999999","@R 9-999","@R 9-999"},;
                      {"T","Mercadoria","Unid","Estoque","Código","Setor1","Setor2"}}
                      o_MsgR:="( <F09 / TAB> Seleciona           <F10> PROCESSA )"
         NewDbBusca(2,0,,,Titulo,NomeCampos,"FuncBALANCO",o_MsgR,,,,,,.T.)
         CloseWindow()
      ElseIf wSaida=.F.
         ShowMessage(,,"Não há produtos com estoque para BALANÇO.",0)
      EndIf 
      CloseTmp()

      CloseWindow()
	EndIf
End
NewDbCloseAll()
wNetUse:=.T.
CloseWindow()
Return .T.
Se alguem conseguir achar aonde esta dando errado, fico muito grato.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
Pq vc não cria um indice temporário e trabalha nele na condição que deseja ?

Código: Selecionar todos

While CEST0300->(!Eof()).And.If(o_Acao=4,If(SubStr(wMerc,3,2)=="99",Left(CEST0300->CODIGO,2)==Left(wMerc,2),Left(CEST0300->CODIGO,4)==Left(wMerc,4)),.T.).And.wSaida=.F.
Parece que não está nessa ordem ai em cima.
Coloca um browse() pra ver a ordem que está.

Obs. Eu só trabalho com indices temporários nestes casos. É super rápido!
Outra coisa seu código tem muita coisa da WVW. Se for fazer um exemplo pra gente testar, não use WVW use @ say, etc normal mesmo.
Neste caso específico não precisa.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
Mais uma coisa.
O LetoDb[f] Não tem um DRIVE próprio CDX/NTX/IDX/FPT/DBT ele usa o que tem no Harbour mesmo.
O que existe é uma plataforma de comunicação com o servidor.
Quando vc diz que com CDX funcionava, não é problema do Leto, pq LetoDb usa CDX do Harbour.
Tanto é assim que eu crio meus CDX que não são temporários usando "DBFCDX".(fora do Letodb) e depois acesso eles usando LetoDB.
Posso fazer da duas formas COM LETO ou DBFCDX que é a mesma coisa.
Por questão de segurança eu derrubo o serviço do Leto e faço a indexação local. Isso quando preciso adicionar uma nova TAG, ou mudar a estrutura do DBF, faço isso com a rede LIGADA, só desligo o serviço do LetoDb, coisa de pouquíssimos minutos, até com a loja funcionando de tão rápido que é.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
Mais, outra coisa!
Veja que não tem problema NENHUM com LetoDBf (pelo menos até aqui.)
A forma que vc está fazendo, as pessoas que já usam fazem da mesma forma.
Vc pode está com problema de reconhecimento de variáveis do lado do servidor(indices), quando não acha ou a ordem não está corretamente setada.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Boa noite.
Quanto ao temporário eu uso temporário, neste mesmo exemplo tem o temporário.
Coloquei o fonte completo, vou refazer.
Nos outros módulos está funcionando perfeitamente nos dois drivers DBFCDX e LETO.
O fonte é o mesmo apenas seto no arquivo INI se é leto ou DBFCDX.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
neste mesmo exemplo tem o temporário.
Cadê ?
INDEX ON ... TAG FOR ... TEMPORARY

Código: Selecionar todos

cQuery := " dtos(emissao) >= '"+DToS(dIni)+"' .and. dtos(emissao) <= '"+dtos(dFim)+"'"
   Index on DToS(emissao) TAG tmp_tp50 FOR &cQuery temporary 
Esse DO WHILE, eu usaria já um indice nele
index on ... TAG ... FOR ... -> If(o_Acao=4,If(SubStr(wMerc,3,2)=="99",Left(CEST0300->CODIGO,2)==Left(wMerc,2),Left(CEST0300->CODIGO,4)==Left(wMerc,4)),.T.).And.wSaida=.F. TEMPORARY
Esse wSaida=.F. é um FIELD do DBF ? tá servindo de quê ele ai ?
Do WHILE CEST0300->(!EOF())
...
ENDDO

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Bom dia Itamar.
Olha, eu nunca pensei em usar desta forma, o que mudaria em relação a velocidade de pesquisa do relatório?
Como eu uso: exemplo deste módulo

Pego um nome para a variavel que guardo o nome do arquivo temporário criado.
abro os arquivos necessários e principalmente o de produto, como não uso TAG para um unico indice, uso IDX cada arquivo um indice (motivo obvio, não há tempo hábil para mudar agora, mas farei em breve de forma escalonada)

NetUseFile("CEST0300",{"CEST0300","CEST0301","CEST0302","CEST0303","CEST0304"},.T.) //função propria que abre os arquivos, entre chaves é os indices que necessito, neste caso todos.

File1Tmp:=HoraTmp()
Crio o arquivo temporário e o indice desejado.

OpenTmp(Campos,"DESCRICAO") //cria o arquivo temporario com os campos desejados e o indice
NetRelFile("CEST0300","COD_MERC") //relaciono com o arquivo que eu quero e a chave
CEST0300->(DbGoTop()) //posiciono no inicio
//procuro no arquivo que esta na ordem de CODIGO indice aberto primeiro lá no netusefile {"CEST0300",.....}
While CEST0300->(!EOF()), mesmo tirando as outras formas de exclusão ele não acha os dados neste modulo em LETO, já em DBFCDX funciona perfeitamente.

CEST0300->(DbSkip(1))
End
//browse que mostra os dados e edita
NewDbBusca(2,0,,,Titulo,NomeCampos,"FuncBALANCO",o_MsgR,,,,,,.T.)

Este é o resumido do fonte enviado no post anterior.
Não consegui localizar aonde falha em buscar os dados através do drive LETO, quanto seto no INI para DBFCDX e acesso o sistema novamente, este módulo funciona perfeitamente.
Vou tentar outras formas, há, um detalhe, no modulo de cadastro do produto funciona perfeitamente tanto no DBFCDX como no LETO e é basicamente da mesma forma de pesquisa.

Grato, valeu, um abraço.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Bom dia, achei o problema, mas mesmo assim não sei o porque.

//NetRelFile("CEST0300","COD_MERC")

Era o relacionamento do arquivo temporário para o cadastro de produto, tirei o relacionamento e funcionou certinho.
Uma coisa eu sei, LETO trabalha diferente do DBFCDX.

Precisava o do relacionamento, não.
Como uso apenas alguns campos não era necessário relacionar, mas em DBFCDX não atrapalhava.

Bem provável no outro módulo com problema, vou verificar agora, seja a mesma coisa, visto que é quase idêntico.

Se alguém puder esclarecer porque esta ocorrendo esta diferença com LETO, fico grato pelo aprendizado.
Valeu
Obrigado.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
Uma coisa eu sei, LETO trabalha diferente do DBFCDX
Não sei o que vc está se referindo, o que é essa diferença.
Eu que uso há mais de 15 anos não sei onde está a diferença.
Talvez seja o uso de relacionamentos que deixei de usar há mais tempo antes do LetoDb já tinha acabado com relacionamentos de arquivos.
Eu uso ordscope() no lugar de "set relation"

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
Esse arquivo que vc chama temporário eu uso na memoria RAM mesmo.

Código: Selecionar todos

DbCreate("mem:obsoletos",Estrutura_Obsoletos(),'DBFCDX',.T.,"old")
Index on ... tag hm01 descend
do while
...
enddo
ou browse()
...
FechaDb("old") //fecha
dbDrop("mem:obsoletos",,"DBFCDX") //apaga o arquivo.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Boa tarde.
Digo em trabalhar diferente é, pq funciona com DBFCDX, mas não em LETODBF.
Uso relacionamento de arquivo qdo preciso mostrar um campo que está em outro arquivo, vou estudar ordscope()
Eu fiz um teste colocando em memória, não gostei muito pq mesmo em memória não obteve rendimento de velocidade, talvez eu não tenha feito certo, vou rever.
Finalmente terminei as alterações necessárias pra funcionar o sistema tanto DBFCDX como LETODBF.
Agora vou fazer um teste em rede.
Grato
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Bom dia.
Vou fazer uma pergunta para os experientes no uso do LETODBF.
Pode ser usado o mesmo banco de dados em um programa no LETO e outro no DBFCDX?

Estou com esta dúvida.
Grato a todos.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
Vou fazer uma pergunta para os experientes no uso do LETODBF.
Pq vc mesmo não testa ai ?
É tão simples!
Abre seu banco de dados de clientes por exemplo via LetoDbf modo SHARED e depois vá na pasta onde esta o banco de dados de clientes e abre ele com o hbrun.exe. Pode editar com rlock()!!!!! etc. Que não tem problema. Vc mesmo pode fazer isso.

Pq está sujeito vim um e falar pode, ai vc diz que não consegue...
Vai fazendo ai que não é bicho de sete cabeças não.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder