DEFININDO O PATH DO SISTEMA LOCALMENTE

WEBIER 01/01/2011 17:31:18
#360826
Boa tarde,

Tenho um de meus programas que trabalham em rede...
Estou tendo um trabalho para definir o path do banco de dados.

Atualmente faço assim:

Num modulo eu declarei a variavel do banco de dados e coloquei tb os dois caminho:

Sub ABRIR_BD()
[ô]Set BD = OpenDatabase([Ô]\\SERVIDOR\SISTEMA\Cyberbase.mdb[Ô])
Set BD = OpenDatabase(App.Path & [Ô]\CYBERBASE.mdb[Ô])
End Sub


ai quando eu vou gerar o executavel do programa onde o banco de dados está local eu habilito a linha do path local e desabilito a do path em rede. Quando eu vou gerar o executavel do programa onde o banco de dados está local eu habilito a linha do path local e desabilito a do path em rede.

tem alguma forma de definir isso em cada terminal, ou seja, cada terminal ser definido o path dele.

Gostaria de uma solução que não deixasse pesado a consulta dos dados no bd
RODRIGOFERRO 01/01/2011 18:09:07
#360827
Resposta escolhida
kra essas informações eu guardava em arquivos [Ô].ini[Ô] entao na entrada no sistema eu faço o programa verificar se o banco existe e se esta conectavel, se nao eu jogo para uma tela onde a pessoa seleciona os dados e faz a gravação deles...

Um arquivo INI é um arquivo texto usado para armazenar/fornecer configurações pessoais para sistemas/usuários ; Um arquivo INI é um arquivo com dados externos ao programa principal.

entao ficara assim a estrutura do arquivo [Ô].ini[Ô]


[DADOS_PROGRAMA]
path=\\SERVIDOR\SISTEMA\Cyberbase.mdb


vamos la mexer com arquivos [Ô].ini[Ô]

Segue Links...

http://www.vbforums.com/showthread.php?t=439267
http://vbtuga.blogspot.com/2008/06/vb6-guardar-configuraes-ini-vs-registry.html
http://www.freevbcode.com/ShowCode.asp?ID=5390
http://www.macoratti.net/arq_ini.htm

Abraços

Espero que ajude.. Abraços
WEBIER 01/01/2011 18:28:26
#360828
tem como postar o codigo ai do acesso ao seu bd via .ini ?
RODRIGOFERRO 01/01/2011 19:03:51
#360829
eu usava esse tipo quando programava em vb6, hoje ja faço criptografado em arquivo xml.

mas é so criar o modulo conforme exemplos que te passei e tacar o valor em uma variavel...


Dim strPath as string
[ô]Leio a função e preenxo a variavel
strPath = ReadINI([Ô]DADOS_PROGRAMA[Ô], [Ô]path[Ô], App.Path & [Ô]\show.ini[Ô])

agora aqui eu seto
Set BD = OpenDatabase(strPath)
ADRIANOM 01/01/2011 20:09:29
#360832
Tente isto
http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=2183

Se não der...

Crie um novo projeto e add esses formulários e ocx que estou te enviando...
Não se esqueça de registrá-las antes...
O módulo.. O Sub Main () dele ... vc altere de acordo com a necessidade do seu programa iniciar.. ok?
Caso seja isso .. Me Pontue...
MARCELO.TREZE 02/01/2011 11:09:17
#360846
bom eu não tenho código aqui, porém eu fazia assim:

usava o arquivo INI, quando o programa era iniciado pela primeira vez verificava se o arquivo ini existia, se não perguntava se seria local ou na rede.

se o usuraio escolhe-se rede então rede era mapeada para se escolher onde esatria o banco.

coissa simples

If Dir([Ô]c:\seuprog\arquivo.ini) = [Ô][Ô] then

[ô] localizar arquivo na rede

end if

WEBIER 03/01/2011 01:26:39
#360899
eu fiz assim:

eu criei uma arquivo .ini chamado config.ini e coloquei ele no path do meu sistema....

coloquei nele assim:
[DADOS_PROGRAMA]
path=App.Path & [Ô]\CYBERBASE.mdb[Ô]


Num modulo eu coloquei assim:

[ô]general_declatarion
Option Explicit
Global BD As Database
Public DBPath As String

[ô]Função para ler o arquivo .ini
Declare Function GetPrivateProfileString Lib [Ô]kernel32[Ô] Alias [Ô]GetPrivateProfileStringA[Ô] (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nsize As Long, ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib [Ô]kernel32[Ô] Alias [Ô]WritePrivateProfileStringA[Ô] (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

[ô]função para abrir o banco de dados
Sub Abrir_BD3()
[ô]Leio a função e preenxo a variavel
DBPath = ReadINI([Ô]DADOS_PROGRAMA[Ô], [Ô]path[Ô], App.Path & [Ô]\Config.ini[Ô])

[ô]agora aqui eu seto
Set BD = OpenDatabase(DBPath)
End Sub


ai no form_load eu coloquei assim:
Private Sub Form_Load()
Dim SQL As String
Dim RS As Recordset

Call Abrir_BD3
SQL = [Ô]SELECT * FROM CONFIGURACAO WHERE (CODIGO = 1)[Ô]
Set RS = BD.OpenRecordset(SQL)
End Sub


ai quando executo ele dar o erro:
Nome do arquivo invalido!

ai quando debugo ele seleciona a linha:
Set BD = OpenDatabase(DBPath) ai quando coloco o mouse sobre DBPath ele me mostra [Ô]App.Path & [Ô]\CYBERBASE.mdb[Ô][Ô]

o banco de dados existe normalmente...
tanto que se eu mudar de Set BD = OpenDatabase(DBPath) para Set BD = OpenDatabase(App.Path & [Ô]\CYBERBASE.mdb[Ô]) ele abre normalmente.

onde tô errando?
MARCELO.TREZE 03/01/2011 12:52:55
#360948
primeiro função para ser gravada em um módulo

[ô]
[ô] funções para escrever e ler arquivos ini
[ô]
Declare Function WritePrivateProfileString Lib [Ô]kernel32[Ô] Alias _
[Ô]WritePrivateProfileStringA[Ô] (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName _
As String) As Long
[ô]
Declare Function GetPrivateProfileString Lib [Ô]kernel32[Ô] Alias _
[Ô]GetPrivateProfileStringA[Ô] (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString _
As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
[ô]
Public Ret As String
[ô]
[ô] sub função para gravar um arquivo ini
[ô]
Public Sub WriteINI(FileName As String, Section As String, Key As String, Text As String)
WritePrivateProfileString Section, Key, Text, FileName
End Sub
[ô]
[ô] Função para ler um arquivo ini
[ô]
Public Function ReadINI(FileName As String, Section As String, Key As String)
Ret = Space$(255)
retLen = GetPrivateProfileString(Section, Key, [Ô][Ô], Ret, Len(Ret), FileName)
Ret = Left$(Ret, retLen)
ReadINI = Ret
End Function



no arquivo ini o caminho tem de estar completo

[DADOS_PROGRAMA]
path = [Ô]c:\Arquivos de Programas\CYBERBASE\CYBERBASE.mdb[Ô]


e carregar assim

[ô]função para abrir o banco de dados
Sub Abrir_BD3()
[ô]Leio a função e preencho a variavel
DBPath = ReadINI(App.Path & [Ô]\config.ini, [Ô]DADOS_PROGRAMA[Ô], [Ô]path[Ô])
[ô]agora aqui eu seto
Set BD = OpenDatabase(DBPath)
End Sub



agora sim funciona

bom se o seu banco estiver em outro pc na rede proceda desta forma

[DADOS_PROGRAMA]
path = [Ô]\\PC_DA_REDE\CYBERBASE\CYBERBASE.mdb[Ô]


WEBIER 03/01/2011 23:54:36
#361017
Deu o erro:
Variavel nao definida: em [Ô]retLen[Ô]
ADRIANOM 03/01/2011 23:55:32
#361018
O arquivo que lhe postei não foi útil não?
WEBIER 04/01/2011 00:16:23
#361019
sorry... declarei como String e deu certinho!

Sim, baixei seu exemplo, mas não pude abrir, pois deu erro aqui nele... só serviu visivelmente... me parece bom, tem como ver pq nao abriu... pois coloquei os ocx no system32 e os registrei... na quando executo os picturebox aparece vazio e nao tem nenhuma função!
Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas