Página 2 de 2

Re: Prescisando de Libs para xHarbour 1.0.0

Enviado: 09 Dez 2009 16:13
por Itamar M. Lins Jr.
Essas linhas de comando abaixo não chega a nem compilar quando utilizado o "VIA LETO" ou "VIA DBFCDX"
"Faia" minha.
Esse via é usando com o comando "USE" ou "APPEND".

Código: Selecionar todos

use meudbf.dbf via "LETO"
index on xyz ...
append from ... via "DBFCDX"
o curioso que consigo fazer filtro utilizando variaveis, tipo:
Pode porque o filtro não cria arquivo do lado do servidor.

Saudações,
Itamar M. Lins Jr.

Também preciso de Libs mas p/ Harbour 1.0

Enviado: 11 Dez 2009 06:13
por ricardo-barros
Também preciso de Libs mas p/ Harbour 1.0

Gt_wvw.lib para usar Fivewin e modo console no mesmo sistema.

E as outras eu nem sei quais são mas parecem necessárias para as seguintes linhas:

h1:= LoadLibrary("Daruma32.dll")
ret:= dllcall(h1,32,"Daruma_FI_LeituraX")

Que geram o seguinte erro:

Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_LOADLIBRARY' referenced from C:\SCE\DARUMA\X.OBJ
Error: Unresolved external '_HB_FUN_DLLCALL' referenced from C:\SCE\DARUMA\X.OBJ

Se o amigo sygecom ou alguém mais tiver qualquer essas libs poderia anexá-la(s) neste forum, por favor?
Obs. Eu uso Harbour 1.0 Alfa build.

Obrigado.

Re: Prescisando de Libs para xHarbour 1.0.0

Enviado: 12 Dez 2009 08:31
por frazato
Bom dia!

Deve ter alguma coisa de errado comigo, rs! não consigo gerar indice temporario através do LETODB até fiz alguns testes utilizando consultas direto ficou bem legal so que o boa parte de todo o meu sistema e baseado em indice temporario em relatórios, consultas e geração de arquivos. E tenho algumas duvidas:

1 - E possivel gerar indice temporio no LETODB usando Variaveis? Se possivel como?
2 - Caso nao seja possivel gerar indice como faço para fazer uso de filtros( Sem ser atraves do SET Filter ) visto que o SCOPE tambem nao funciona.


Obrigado.

Frazato
sistema_jaf@hotmail.com

Re: Prescisando de Libs para xHarbour 1.0.0

Enviado: 12 Dez 2009 18:50
por sygecom
Olá Frazato,
frazato escreveu: 1 - E possivel gerar indice temporio no LETODB usando Variaveis? Se possivel como?
Com variaveis complexas eu não sei mesmo, mas com condições de FOR eu uso e funciona ex:

Código: Selecionar todos

Index on Codigo Tag Temp FOR(CODEST) > 0
No seu exemplo você uso VIA no comando INDEX o comando VIA deve ser usado apenas na abertura do DBF, o índice vai ser gerado conforme a abertura do arquivo no seu caso VIA LETO, ai esse índice vai ser gerado do lado no servidor, se você deseja gerar um índice temporário no lado cliente ai você deve abrir o DBF LETO fazer um COPY FILE para o lado cliente e ai abrir o DBF local e gerar o indice local temporario, ou nesse caso só copiar o que você desejava filtrar pelo índice.
2 - Caso nao seja possivel gerar indice como faço para fazer uso de filtros( Sem ser atraves do SET Filter ) visto que o SCOPE tambem nao funciona.
Como não funciona ? Qual versão do LetoDB você está usando e qual versão do Harbour ou xHarbour ?

Re: Prescisando de Libs para xHarbour 1.0.0

Enviado: 13 Dez 2009 07:18
por frazato
Bom dia!

Estou usando a versao LetoDb para xharbour 1.0.0 que vc me enviou.

Este comando assim funciona:

Index on Codigo Tag Temp FOR(CODEST) > 0

Desta Maneira nao Funciona:

nVar := 0
Index on Codigo Tag Temp FOR(CODEST) > nVar

Nao estou usando o comando via, pois defini LETODB como padrão para abertura dos DBFS e indice, mais tambem testei usando o comando VIA na abertura do DBF ( Use Produto VIA "LETO" ), tambem nao funcionou.


Segue parte do codigo teste///-----

Function Main
Local cPath
Local cCodig


REQUEST DBFCDX,LETO
RDDSETDEFAULT( "LETO" )

cPath := "//192.168.27.200:2812\"

IF leto_Connect( cPath ) == -1
Alert( "Can't connect to server ..."+cPath)
Return nil
else
? 'Ok-Conectado'
ENDIF


SET PATH TO (cPath)


Close All

SELE 1
USE PRODUTO
SET INDEX TO PRODUTO




//Tenho que gerar um lista de produto por um fornecedor em ordem alfabetica

mForne := Space(5)
@ 02,02 say 'Codigo Fornecedor para Filtro :' Get mForne Pict "99999"
Read
If LastKey()==27
Close All
Return Nil
Endif
mForne := StrZero(Val(mForne),5)

Index on Estoque Tag Temp to Temporal ;
While ( Fornecedor == mForne)

Dbedit(0,0,24,79)


Close All
return nil


Obrigado,

Frazato

Re: Prescisando de Libs para xHarbour 1.0.0

Enviado: 13 Dez 2009 23:49
por Itamar M. Lins Jr.
Ola!
Uma dica muito importante para todos nós.
Vamos aprender a perguntar e procurar ter um mínimo de organização.
Você não postou como está o LetoDb.ini, como é a estrutura dos seus dbf's, seu exemplo não pode ser executado por ninguém apenas por você.
E também não está colocando seu código dentro da cláusula "code,/code".
Desta Maneira nao Funciona:

nVar := 0
Index on Codigo Tag Temp FOR(CODEST) > nVar
Claro que não vai funcionar, o servidor não sabe quem é nVar. Mais isso não é problema do LetoDb, em Sintaxe SQL ou ADS também não podemos fazer assim.
cPath := "//192.168.27.200:2812\"
A sintaxe também não é essa.

Código: Selecionar todos

cPath := "//192.168.27.200:2812/" //essa é a correta.
Aqui já tem erro de programação.
veja:
SELE 1
USE PRODUTO
SET INDEX TO PRODUTO
//para que essas linhas ai em cima ?

e depois você procura:
mForne := StrZero(Val(mForne),5)

Index on Estoque Tag Temp to Temporal ;
While ( Fornecedor == mForne)
Fica dificil ajudar...
Onde está o indice para usar com ordscope?
Com explicado anteriormente, como o servidor vai saber quem é mForne? lembre-se que voce está pedindo a ele para executar uma tarefa, são dois programas distintos, ele não tem como saber o conteúdo das variaveis do seu programa e ele vai criar o INDICE ou DBF no HD do Servidor.
Use o "&" para converter ou "(" parentesis.
Por isso também usamos a função leto_file(), para sabermos se o arquivo existe no HD do servidor.

Código: Selecionar todos

Index  on fornecedor+estoque tag CodigoDoFornecedor //quem é estoque ? se for campo caractere, só numeros, por exemplo fica assim.

mForne := Space(5)
@ 02,02 say 'Codigo Fornecedor para Filtro :' Get mForne Pict "99999"
Read
If LastKey()==27
Close All
Return Nil
Endif
mForne := StrZero(Val(mForne),5)

OrdScope(0,mForne+"00000")
OrdScope(1,mForne+"99999")
Saudações,
Itamar M. Lins Jr.

Re: Prescisando de Libs para xHarbour 1.0.0

Enviado: 14 Dez 2009 09:28
por frazato
Bom dia!
Vou me policiar mais para postar mensagens no forum apartir de hoje, vale sempre a coreção de erros ou atitudes nossas, obrigado!

Estou usando xharbour 1.0.0 com o Bcc para compilar.

Obrigado.

Frazato

Código: Selecionar todos

*****************
Function Main
*****************
*
*
Local cPath
Local cCodig
Local Estru := { {"Codigo"    , "C",05,0 },;
                 {"Descricao" , "C",40,0 },;
                 {"Fornecedor", "C",05,0 },;
                 {"Venda"     , "N",11,2 } }


    Set AutOpen on


    REQUEST DBFCDX,LETO
    DBSETDRIVER("dbfcdx")
    RDDSETDEFAULT( "LETO" )

    cPath := "//192.168.27.200:2812/"

    SET PATH TO (cPath)

    IF leto_Connect( cPath ) == -1
       Alert( "Erro ao Acessar o Servidor..."+cPath)
       Return nil
    else
       ? 'Ok-Conectado'
    ENDIF

    Close All
    Dbcreate(cPath+'TestLeto.dbf',Estru)

    ? 'TestLeto.dbf..... Criado'
    Use TESTLETO
    ? 'Simulando Dados....'

    For i:= 1 to 10000
        Append Blank
        Repla Codigo      With StrZero(i,5)
        Repla Descricao   With 'Produto Seq....'+StrZero(i,5)
        Repla venda       With hb_random(100)
        If i >= 1000 .and. i <= 2000
           Repla Fornecedor  With '00001'
        Endif
    Next

    Index on Fornecedor Tag IDForne To TESTLETO
    ? 'TestLeto.cdx..... Criado'

    CLose All

    SELE 1
         USE TESTLETO Alias Prod
         SET INDEX TO TESTLETO

         cPesq := '00001'


         Sele Prod
              OrdSetFocus('IDForne')
              Go top
              Seek cPesq
              If !Found()
                  Alert(cPesq+' Nao Localizado')
              Endif
             //Set Filter to Fornecedor==cPesq //--- Ok Filtra
              OrdScope(0,cPesq)
              OrdScope(1,cPesq)

              Dbedit(00,00,24,79)
              Set Filter to 

         Close All
return nil

Código: Selecionar todos

LetoDB.Ini

[MAIN]
Port = 2812
DataPath = C:\FRAZATO
Logfile = "letodb.log"
Default_Driver = CDX
EnableFileFunc = 1

Re: Prescisando de Libs para xHarbour 1.0.0

Enviado: 14 Dez 2009 10:45
por Itamar M. Lins Jr.
Olha como ficou:

Código: Selecionar todos

REQUEST DBFCDX,LETO
*****************
Function Main
*****************
*
*
Local cPath, lRddLeto:=.t.
Local cCodig
Local Estru := { {"Codigo"    , "C",05,0 },;
                 {"Descricao" , "C",40,0 },;
                 {"Fornecedor", "C",05,0 },;
                 {"Venda"     , "N",11,2 } }
                 
DRIVER := iif(lRddLeto,'LETO','DBFCDX')

    Set AutOpen on

    RDDSETDEFAULT( "LETO" )

    cPath := "//localhost:2812/"

    //SET PATH TO (cPath)  //pode usar assim, mas eu prefiro indicar o caminho no "use".

    IF leto_Connect( cPath ) == -1
       Alert( "Erro ao Acessar o Servidor..."+cPath)
       Return nil
    else
       ? 'Ok-Conectado'
    ENDIF

    //Close All
    If !leto_File(cPath+'TestLeto.dbf')
       Dbcreate(cPath+'TestLeto.dbf',Estru,DRIVER)
       ? 'TestLeto.dbf..... Criado'
    Else
       ? 'Arquivo Encontrado no Servidor'
    EndIf

    DbUseArea(.t.,"LETO",cPath+"TESTLETO","TLETO",.T.,.F.,'PTISO')
    //Use TESTLETO
    ? 'Simulando Dados....'

    For i:= 1 to 10000
        Append Blank
        Repla Codigo      With StrZero(i,5)
        Repla Descricao   With 'Produto Seq....'+StrZero(i,5)
        Repla venda       With hb_random(100)
        If i >= 1000 .and. i <= 2000
           Repla Fornecedor  With '00001'
        Endif
    Next

    cPesq := '00001'
    
    ? 'Indexando, '+str(RecCount(),5)+' Registro(s).'
    Index on Fornecedor Tag IDForne  //To TESTLETO
    index on Fornecedor tag IDOutro for fornecedor = "&cPesq" //assim pode.
    //index on Fornecedor tag IDOutro for fornecedor = cPesq //assim não pode.
    ? 'TestLeto.cdx..... Criado'

    CLose All

    SELE 1
         USE (cPath+"TESTLETO")  Alias Prod //pode ser assim também!
         //SET INDEX TO TESTLETO

       // Sele Prod
              OrdSetFocus('IDForne')
             // Go top
              If !DbSeek(cPesq)
              //If !Found()
                  Alert(cPesq+' Nao Localizado')
              Endif
             //Set Filter to Fornecedor==cPesq //--- Ok Filtra
              prod->(OrdScope(0,cPesq))
              prod->(OrdScope(1,cPesq))

              Dbedit(00,00,24,79)
              //Set Filter to 
              Set scope to
              prod->(DbGoTop())
              OrdSetFocus('IDOutro')
              Dbedit(00,00,24,79)
              
         Close All
         Leto_Disconnect()
         cls
return nil
Meu LetoDb.ini

Código: Selecionar todos

Port = 2812              
Logfile = "letodb.log"   
DEFAULT_DRIVER = CDX     
DATAPATH = g:\letodb\tests
ENABLEFILEFUNC = 1
CRYPT_TRAFFIC = 0
PASS_FOR_LOGIN = 0
PASS_FOR_MANAGE = 0
PASS_FOR_DATA = 0
[DATABASE]
DataPath = G:\letodb\tests
Driver = CDX
Saudações,
Itamar M. Lins Jr.

Re: Prescisando de Libs para xHarbour 1.0.0

Enviado: 14 Dez 2009 14:48
por frazato
Muito obrigado, deu certinho a criação do indices e o processo de filtro. Assim de possivel vou mudar os processo de aberturas de dbf de meu sistema conforme vossa orientação.

Obrigado.


Frazato