16 Out 2010 23:02
sele cdpar000
do while .t.
if !rlock()
msgexclamation("Aguardando para criar novo orçamento ...","ATENÇÃO")
loop
else
repl numnum with numnum + 1
dbcommit()
orc = numnum
dbunlock()
REQUEST LETO
RDDSETDEFAULT( "LETO" )
use &arquivo shared new
17 Out 2010 22:56
Abre('//192.168.0.1:2815/',"CADASTRO")
SELECT Cadastro
IF CADASTRO->(DbRLock())
CADASTRO->Codigo:=cCodigo
CADASTRO->(DbCommit())
CADASTRO->(DbUnlock())
ELSE
msgexclamation("Aguardando liberação de registro ...","ATENÇÃO")
LOOP
ENDIF
FUNCTION NetUse(cServer,cDatabase,lOpenMode,nSeconds,cRDD)
LOCAL lForever, cDirTab:=""
DEFAULT lOpenMode TO .F.,;
nSeconds TO 0,;
cRDD TO "DBFCDX",;
cServer TO ""
lForever := (nSeconds = 0)
Do While (lForever .Or. nSeconds > 0)
If lOpenMode
DBUseArea(.T.,,cServer+cDataBase,cDataBase,.F.,"DBFCDX")
Else
DBUseArea(.T.,,cServer+cDataBase,cDataBase,.T.,"DBFCDX")
EndIf
If ! NetErr() // Use succeeds
RETURN (.T.)
EndIf
Inkey(1) // Wait 1 second
nSeconds --
EndDo
RETURN (.F.)
#include "common.ch"
FUNCTION Abre(cServer,cDataBase,lExclusive,cArqTemp,lNomeTabela)
LOCAL nArea, cDirSys:=cServer
DEFAULT lExclusive TO .F.,;
cArqTemp TO "",;
lNomeTabela TO .T.,;
cServer TO ""
// ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
// Abre o Arquivo necessario na rotina.
// ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
IF Alias() = Upper(cDataBase)
DbSelectArea(cDataBase)
RETURN .T.
ENDIF
FOR nArea:=0 To 100
IF !Empty((nArea)->(Alias()))
If RTrim((nArea)->(Alias())) = Upper(cDataBase)
DbSelectArea(cDataBase)
RETURN .T.
ENDIF
ENDIF
NEXT
DO CASE
CASE UPPER(cDataBase) = 'CADASTRO'
IF !LETO_FILE(cServer+"CADASTRO.CDX")
NetUse(cServer,cDataBase,.T.)
INDEX ON APTO TAG CAD001
INDEX ON SACADO TAG CAD002
CADASTRO->(DbCloseArea())
ENDIF
IF !lExclusive
NetUse(cServer,cDataBase,lExclusive)
ENDIF
OTHERWISE
Exclama('Arquivo: '+cDataBase+' não criado!')
ENDCASE
DbSelectArea(cDataBase)
RETURN .T.
18 Out 2010 10:11
[SERVIDOR]
Servidor=//192.168.0.10:2812/
Dados=\Alamino\
Drive=C:
RDD=LETO
Port = 2812
DataPath = \c:\alamino
Logfile = "letodb.log"
Default_Driver = CDX
EnableFileFunc = 1
Crypt_Traffic = 1
Função de abertura
[code]Function usa(arquivo,sh,ro)
If RddLeto
If Leto_File(srv+arquivo+'.dbf')
DbUseArea(.t.,"LETO",srv+arquivo+'.dbf',,sh,ro,'PTISO')
Else
MsgStop('Arquivo Não Foi Localizado: '+arquivo+'.dbf')
return .f.
EndIf
Else
DbUseArea(.t.,'DBFCDX',arquivo,,sh,ro,'PTISO')
if neterr()
return .f.
endif
EndIf
return .t.
18 Out 2010 12:12
18 Out 2010 12:33
if orc = 0
sele cdpar000
leto_begintransaction() // coloquei por curiosidade
do while .t.
if !rlock()
msgexclamation("Aguardando para criar novo orçamento ...","ATENÇÃO")
loop
else
repl numnum with numnum+1
//dbcommit() // tirei esta, mas já testei com ela junto e nada
orc = numnum // aqui parece que a variável orc não é atualizada com base no valor do campo do dbf
leto_CommitTransaction() // idem
dbunlock() ...
18 Out 2010 13:19
18 Out 2010 13:36
18 Out 2010 13:44
18 Out 2010 13:51
Isso mesmo.Alamino, não conheço esse LetoDB (me parece ser um servidor onde os DBFs ficam para acesso via rede/ip) seria isso?
Bom em se tratando de servidor de arquivo (base de dados) notei no seu post que é como se tivesse um dbf em cada pc, temporariamente. Ao exemplo do que acontece com os DATASET de outras linguagens, a cada solicitação a máquina cliente recebe uma cópia (parcial ou total) da tabela solicitada no servidor (veja, nao sei como funciona isso no LetoDB). Talvez seja por isso que esta sendo gerado o mesmo numero de pedido, sera que o dbcommit() nao esta atualizando a tabela temporaria do pc em questão?
18 Out 2010 13:59
asimoes escreveu:Alamino,
Tenta uma coisa, após gravar, fecha a tabela e abre novamente.
Atente que eu estou defindo o rdd "DBFCDX" AQUI
DBUseArea(.T.,,cServer+cDataBase,cDataBase,.F.,"DBFCDX") // essa é aminha forma.
18 Out 2010 14:08
DBUseArea(.T., ,cServer+cDataBase,cDataBase,.F.,"DBFCDX")
18 Out 2010 14:25
18 Out 2010 14:48
18 Out 2010 15:07
18 Out 2010 16:45
repl numnum with numnum+1
dbcommit()
skip 0
orc = numnum
dbunlock() ...