Abertura de arquivo em rede
Moderador: Moderadores
Abertura de arquivo em rede
Bom dia amigos !
Estou tentando adaptar um função de abertura de arquivo em rede, de um exemplo que está no link
http://www.geocities.com/Area51/Lair/51 ... #exemplo13.
A função é a "NetUse".
Porém ao compilar com hbmake, ocorre a seguinte mensagem: "syntax error at ´NSECONDS´ "
A tempos venho tentando alterar meu programa para abertura em rede, mas não estou tendo sucesso. Consigo abrir em outro terminal desde que
o "DBF" não esteja em uso em outro computador. Estou usando atualmente esta codificação para abrir em rede:
USE DBF ALIAS cDBF SHARED NEW EXCLUSIVE
IF !NETERR()
IF !FILE("INDICE.NTX")
INDEX ON "TAL" TO INDICE
ENDIF
ELSE
NETMSG() // Informo que o Arquivo está em uso no momento.
CLOSE DATA
RETURN .F.
ENDIF
SET INDEX TO INDICE
DBGOTOP()
...
Se alguem puder me ajudar ...
Muito obrigado !!
[]´s
Netavin
Em tempo: Moderador, desculpe-me ! Não consigo identar o código.
Estou tentando adaptar um função de abertura de arquivo em rede, de um exemplo que está no link
http://www.geocities.com/Area51/Lair/51 ... #exemplo13.
A função é a "NetUse".
Porém ao compilar com hbmake, ocorre a seguinte mensagem: "syntax error at ´NSECONDS´ "
A tempos venho tentando alterar meu programa para abertura em rede, mas não estou tendo sucesso. Consigo abrir em outro terminal desde que
o "DBF" não esteja em uso em outro computador. Estou usando atualmente esta codificação para abrir em rede:
USE DBF ALIAS cDBF SHARED NEW EXCLUSIVE
IF !NETERR()
IF !FILE("INDICE.NTX")
INDEX ON "TAL" TO INDICE
ENDIF
ELSE
NETMSG() // Informo que o Arquivo está em uso no momento.
CLOSE DATA
RETURN .F.
ENDIF
SET INDEX TO INDICE
DBGOTOP()
...
Se alguem puder me ajudar ...
Muito obrigado !!
[]´s
Netavin
Em tempo: Moderador, desculpe-me ! Não consigo identar o código.
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: ABERTURA DE ARQUIVO EM REDE
Olá Netavin,
Primeiro você não prescisa de uma função pronto para abrir seus DBF em rede, tudo que você prescisa é mudar seu codigo fonte unsado conforme exemplo abaixo:
Sempre que houver EXCLUSIVE no junto com o comando USE seu DBF sera aberto como exclusivo, não deixando outras estações abrir o mesmo DBF.
Agora, se você já deseja implantar uma função de abertura de DBF que é o ideal por questão de facilidade, você pode tentar a que estou usando abaixo:
*IF Use_Arq("AGENDA",,.T.,.F.,.F.)=.F. // COMPARTILHADO
* Return
*ENDIF
*IF Use_Arq("AGENDA",,.T.,.T.,.F.)=.F. // SOMENTE LEITURA
* Return
*ENDIF
*IF Use_Arq("AGENDA",,.F.,.F.,.T.)=.F. // TEMPORARIO
* Return
*ENDIF
*IF Use_Arq("AGENDA",,.F.,.F.,.F.)=.F. // EXCLUSIVO
* Return
*ENDIF
Agora se você tiver usando CDX com SET AUTOPEN ON é só comentar a linha onde tem o DBSETINDEX()
Primeiro você não prescisa de uma função pronto para abrir seus DBF em rede, tudo que você prescisa é mudar seu codigo fonte unsado conforme exemplo abaixo:
Código: Selecionar todos
USE DBF ALIAS cDBF SHARED NEW
IF !FILE("INDICE.NTX")
INDEX ON "TAL" TO INDICE
ELSE
SET INDEX TO INDICE
ENDIF
Agora, se você já deseja implantar uma função de abertura de DBF que é o ideal por questão de facilidade, você pode tentar a que estou usando abaixo:
*IF Use_Arq("AGENDA",,.T.,.F.,.F.)=.F. // COMPARTILHADO
* Return
*ENDIF
*IF Use_Arq("AGENDA",,.T.,.T.,.F.)=.F. // SOMENTE LEITURA
* Return
*ENDIF
*IF Use_Arq("AGENDA",,.F.,.F.,.T.)=.F. // TEMPORARIO
* Return
*ENDIF
*IF Use_Arq("AGENDA",,.F.,.F.,.F.)=.F. // EXCLUSIVO
* Return
*ENDIF
Código: Selecionar todos
FUNCTION Use_Arq(cArquivo,cAlias,iShared,iLeitura,iTemp)
//--> cArquivo : Nome do Arquivo
//--> cAlias : Nome do Apelido
//--> iShared : .f. Exclusivo ou .t. Compartilhado
//--> iLeitura : .t. só Leitura ou .f. Leitura e Gravação
//--> iTemp : .t. usa uma tabela temporaria ou .f. abre uma tabela normal
local lReturn := .F.
Local cDriver := "DBFCDX"
DEFAULT iShared TO .F.
DEFAULT iLeitura TO .F.
DEFAULT cAlias TO cArquivo
do while .t.
HW_Atualiza_Dialogo("Abrindo a Tabela: " + cArquivo)
IF SELECT(cAlias)=0
TRY
DBSELECTAREA(0) // SELECIONA A PROXIMA AREA LIVRE
DbUseArea(.t.,cDriver,cArquivo,cAlias,iShared,iLeitura,,)
catch e
vResp := MsgRetryCancel( "Erro ao Tentar Abrir a Tabela: " + cArquivo + ", Favor revisar a conexão com o Servidor !","Aviso do Sistema")
IF vRESP=4
loop
ELSE
Return .f.
endif
END
IF NetErr()
vRESP := MsgRetryCancel( "Sistema em Uso em Modo Exclusivo por Outra Estação no Momento !","Aviso do Sistema" )
IF vRESP=4
loop
ELSE
Return .f.
endif
else
IF File(cArquivo+".cdx")
DBSETINDEX(cArquivo)
endif
SELECT(cAlias)
Return .t.
endif
ELSE
SELECT(cAlias)
USE
LOOP
ENDIF
enddo
Return lReturn
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: ABERTURA DE ARQUIVO EM REDE
"Leo" , obrigado pela atenção !
...estou usando NTX. Vou fazer a alteração neste quesito e realizar os testes; e já que dei inicio a essa questão, irei até o final para solucionar de vez essa minha dificuldade em trabalhar em rede... com a ajuda dos amigos, claro.
Forte abraço !
Netavin
...estou usando NTX. Vou fazer a alteração neste quesito e realizar os testes; e já que dei inicio a essa questão, irei até o final para solucionar de vez essa minha dificuldade em trabalhar em rede... com a ajuda dos amigos, claro.
Forte abraço !
Netavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: ABERTURA DE ARQUIVO EM REDE
Beleza, qualquer coisa prende o grito....
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: ABERTURA DE ARQUIVO EM REDE
...amigo Leonardo.
ocorre o seguinte ao compilar: Syntax error at "iLeitura"
Syntax error at "cAlias"
...
... Netavin.
ocorre o seguinte ao compilar: Syntax error at "iLeitura"
Syntax error at "cAlias"
...
... Netavin.
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: ABERTURA DE ARQUIVO EM REDE
Você esta usando exatamenete como postei ou mudou algo ? se mudou post como ficou a função de abertura e como esta chamando ela em sua app.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: ABERTURA DE ARQUIVO EM REDE
...estou chamando assim:
/* >>>>>>> InclusÆo <<<<<<< */
Function Ag_incl()
Local Qtd, SavOrd
Use_Arq(cArquivo,cAlias,iShared,iLeitura,iTemp)
IF !FILE("ORDE.NTX")
INDEX ON ORDE TO ORDE
ENDIF
IF !FILE("FONO.NTX")
INDEX ON NOME TO FONO
ENDIF
SET INDEX TO ORDE, FONO
DBSETORDER(1)
DBGOTOP()
... to indo pegar um rango e volto daqui nadinha...
[]´s
Netavin
/* >>>>>>> InclusÆo <<<<<<< */
Function Ag_incl()
Local Qtd, SavOrd
Use_Arq(cArquivo,cAlias,iShared,iLeitura,iTemp)
IF !FILE("ORDE.NTX")
INDEX ON ORDE TO ORDE
ENDIF
IF !FILE("FONO.NTX")
INDEX ON NOME TO FONO
ENDIF
SET INDEX TO ORDE, FONO
DBSETORDER(1)
DBGOTOP()
... to indo pegar um rango e volto daqui nadinha...
[]´s
Netavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: ABERTURA DE ARQUIVO EM REDE
Olá Netavin,
Olhe os exemplos de uso que postei acima da função:
ex:
Vamos supor que temos um DBF que se chama AGENDA.DBF e dois indice um com nome de AGENDA1.NTX e outro com nome de AGENDA2.NTX, então a abertura ficaria assim:
Ex: PARA ABRIR O DBF EM MODO COMPARTILHADO
Ex: PARA ABRIR O DBF EM MODO DE SOMENTE LEITURA
Ex: PARA ABRIR O DBF EM MODO EXCLUSIVO(Somente um usuario de cada vez)
E como você usa NTX, mudei a função para melhor lhe servir conforme abaixo:
Olhe os exemplos de uso que postei acima da função:
ex:
Vamos supor que temos um DBF que se chama AGENDA.DBF e dois indice um com nome de AGENDA1.NTX e outro com nome de AGENDA2.NTX, então a abertura ficaria assim:
Ex: PARA ABRIR O DBF EM MODO COMPARTILHADO
Código: Selecionar todos
IF Use_Arq("AGENDA",,.T.,.F.)=.F. // PARA ABRIR O DBF EM MODO COMPARTILHADO
Return
ENDIF
IF !FILE("AGENDA1.NTX")
INDEX ON NOME TO AGENDA1
ENDIF
IF !FILE("AGENDA2.NTX")
INDEX ON COD TO AGENDA2
ENDIF
SET INDEX TO AGENDA1,AGENDA2
Código: Selecionar todos
IF Use_Arq("AGENDA",,.T.,.T.)=.F. // PARA ABRIR O DBF EM MODO DE SOMENTE LEITURA
Return
ENDIF
IF !FILE("AGENDA1.NTX")
INDEX ON NOME TO AGENDA1
ENDIF
IF !FILE("AGENDA2.NTX")
INDEX ON COD TO AGENDA2
ENDIF
SET INDEX TO AGENDA1,AGENDA2
Código: Selecionar todos
IF Use_Arq("AGENDA",,.F.,.F.)=.F. // PARA ABRIR O DBF EM MODO EXCLUSIVO(Somente um usuario de cada vez)
Return
ENDIF
IF !FILE("AGENDA1.NTX")
INDEX ON NOME TO AGENDA1
ENDIF
IF !FILE("AGENDA2.NTX")
INDEX ON COD TO AGENDA2
ENDIF
SET INDEX TO AGENDA1,AGENDA2
Código: Selecionar todos
FUNCTION Use_Arq(cArquivo,cAlias,iShared,iLeitura)
//--> cArquivo : Nome do Arquivo
//--> cAlias : Nome do Apelido
//--> iShared : .f. Exclusivo ou .t. Compartilhado
//--> iLeitura : .t. só Leitura ou .f. Leitura e Gravação
local lReturn := .F.
Local cDriver := "DBFNTX"
DEFAULT iShared TO .F.
DEFAULT iLeitura TO .F.
DEFAULT cAlias TO cArquivo
do while .t.
IF SELECT(cAlias)=0
TRY
DBSELECTAREA(0) // SELECIONA A PROXIMA AREA LIVRE
DbUseArea(.t.,cDriver,cArquivo,cAlias,iShared,iLeitura,,)
catch e
vResp := Alert( "Erro ao Tentar Abrir a Tabela: " + cArquivo + ", Favor revisar, Deseja Repetir ?",{ "Sim", "Não" })
IF vRESP=0
loop
ELSE
Return .f.
endif
END
IF NetErr()
vResp := Alert( "Erro ao Tentar Abrir a Tabela: " + cArquivo + ", Favor revisar, Deseja Repetir ?",{ "Sim", "Não" })
IF vRESP=0
loop
ELSE
Return .f.
endif
else
SELECT(cAlias)
Return .t.
endif
ELSE
SELECT(cAlias)
USE
LOOP
ENDIF
enddo
Return lReturn
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: ABERTURA DE ARQUIVO EM REDE
... valeu Syge !
Faltou mais atenção minha. :%
Vou voltar à prancheta e retorno, dessa vez, com boas novas.
[]´s
Netavin
Faltou mais atenção minha. :%
Vou voltar à prancheta e retorno, dessa vez, com boas novas.
[]´s
Netavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
Re: ABERTURA DE ARQUIVO EM REDE
... Sygecom. Se matou passarinho quando criança ... agora vai pagar esses pecados.
Amigo, veja como estou fazendo, e ainda continua aqueles problemas (ocorre o seguinte ao compilar: Syntax error at "iLeitura"
Syntax error at "cAlias" / Syntax error at "iShared".
...
[]´s
Netavin....
-----------------------------------
Nota da Moderação(Sygecom):Topico editado para colocar a TAG [ CODE ]
Veja como adicionar a TAG [ CODE ]
faq.php?mode=bbcode#f21
Amigo, veja como estou fazendo, e ainda continua aqueles problemas (ocorre o seguinte ao compilar: Syntax error at "iLeitura"
Syntax error at "cAlias" / Syntax error at "iShared".
Código: Selecionar todos
/* >>>>>>> InclusÆo <<<<<<< */
Function Ag_incl()
Local Qtd, SavOrd
IF Use_Arq("CAFONE",,.F.,.F.)=.F. // ABRE O DBF EM MODO EXCLUSIVO(Somente 1 usuario de cada vez)
RETURN
ENDIF
IF !FILE("ORDE.NTX")
INDEX ON ORDE TO ORDE
ENDIF
IF !FILE("FONO.NTX")
INDEX ON NOME TO FONO
ENDIF
SET INDEX TO ORDE, FONO
DBSETORDER(1)
DBGOTOP()
...
//******************************************************//
FUNCTION Use_Arq(CAFONE,AGENDA,.F.)
//******************************************************//
local lReturn := .F.
Local cDriver := "DBFNTX"
DEFAULT iShared TO .F.
DEFAULT iLeitura TO .F.
DEFAULT cAlias TO cArquivo
do while .t.
IF SELECT(cAlias)=0
TRY
DBSELECTAREA(0) // SELECIONA A PROXIMA AREA LIVRE
DbUseArea(.t.,cDriver,cArquivo,cAlias,iShared,iLeitura,,)
catch e
vResp := Alert( "Erro ao Tentar Abrir a Tabela: " + cArquivo + ", Favor revisar,Deseja Repetir ?",{ "Sim", "NÆo" })
IF vRESP=0
loop
ELSE
Return .f.
endif
END
IF NetErr()
vResp := Alert( "Erro ao Tentar Abrir a Tabela: " + cArquivo + ", Favor revisar,Deseja Repetir ?",{ "Sim", "NÆo" })
IF vRESP=0
loop
ELSE
Return .f.
endif
else
SELECT(cAlias)
Return .t.
endif
ELSE
SELECT(cAlias)
USE
LOOP
ENDIF
enddo
Return lReturn
[]´s
Netavin....
-----------------------------------
Nota da Moderação(Sygecom):Topico editado para colocar a TAG [ CODE ]
Veja como adicionar a TAG [ CODE ]
faq.php?mode=bbcode#f21
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
Re: ABERTURA DE ARQUIVO EM REDE
Boa noite amigos !
Valeu Sygecom !!! ... com um pouco mais de atenção e estudo, consegui decifrar suas explicações. Tudo certo agora.
Obrigado e me desculpe !! :xau
[]´s
Neetavin
Valeu Sygecom !!! ... com um pouco mais de atenção e estudo, consegui decifrar suas explicações. Tudo certo agora.
Obrigado e me desculpe !! :xau
[]´s
Neetavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: ABERTURA DE ARQUIVO EM REDE
Puxa, eu não tinha visto seu post anterior, me passou despercebido, mas menos mal que ja resolveu tudo por ai !!!
Um detalhe que esqueci me mencionar foi que teria que ter o #INCLUDE "COMMON.CH" no inicio do .PRG por causa dos DEFAULT, mas agora já é tarde pra avisar.
Qualquer coisa prende o grito...
Um detalhe que esqueci me mencionar foi que teria que ter o #INCLUDE "COMMON.CH" no inicio do .PRG por causa dos DEFAULT, mas agora já é tarde pra avisar.
Qualquer coisa prende o grito...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
jamazevedo
- Usuário Nível 3

- Mensagens: 122
- Registrado em: 29 Dez 2005 16:50
- Localização: Manaus - AM
Re: ABERTURA DE ARQUIVO EM REDE
Você escreveu a seguinte função:
Acredito que deveria ficar assim:
Porque as variáveis iShared, iLeitura e cAlias, se não analisei de forma errada, devem vir da função que as chamou.
Código: Selecionar todos
//******************************************************//
FUNCTION Use_Arq(CAFONE,AGENDA,.F.)
//******************************************************//
local lReturn := .F.
Local cDriver := "DBFNTX"
DEFAULT iShared TO .F.
DEFAULT iLeitura TO .F.
DEFAULT cAlias TO cArquivo
do while .t.
...
Código: Selecionar todos
//******************************************************//
FUNCTION Use_Arq(CAFONE,AGENDA , iSHARED , iLEITURA , cALIAS )
//******************************************************//
local lReturn := .F.
Local cDriver := "DBFNTX"
DEFAULT iShared TO .F.
DEFAULT iLeitura TO .F.
DEFAULT cAlias TO cArquivo
do while .t.
...
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM