Clipper On Line • Ver Tópico - Verificar o banco de dados
Mudar para estilo Clássico
Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.
Postar uma resposta

Verificar o banco de dados

30 Ago 2019 09:42

Bom dia a todos.
Não localizei no fórum algo sobre este assunto.
Necessito verificar se o banco de dados existe ou não, isto em REDE, porque localmente o file() resolve, em rede não localiza.
Já tentei, FILE(), HB_FILEEXISTS(), HB_VFEXISTS(), nenhum resultou satisfatório o resultado.
Necessito disto para fazer em SQL tudo que faço em DBF
Verificar se o banco existe
Verificar se a tabela existe
Verificar se a tabela esta diferente
Se alguem puder me passar porque não esta dando certo, eu fico muito grato.
Valeu pela ajuda.
:D

Verificar o banco de dados

30 Ago 2019 09:53

leandrolinauer escreveu:Necessito verificar se o banco de dados existe ou não, isto em REDE, porque localmente o file() resolve, em rede não localiza.

leandrolinauer escreveu:Necessito disto para fazer em SQL tudo que faço em DBF


Você quer ajuda pra testar não sei o que, não sei aonde, não sei com qual base de dados, e não sei com qual acesso...
Não sei se sei.

Verificar o banco de dados

30 Ago 2019 11:39

:D , desculpe-me não fui claro o suficiente.
Estou migrando para FIREBIRD.
Na verdade não é testar, eu preciso de uma luz de como verificar se o banco de dados sql existe na pasta destino.
exemplo em dbf:
Código:
If !file(arquivodbf)
   Dbcreta(arquivodbf)
Else
  If "estrutura" # do arquivodbf
     Modificaestrutura(acrescenta ou remove campos)
  EndIf
  Indexa(arquivodbf)
EndIf


Preciso fazer isto aí em SQL, mas o file() não funciona
Código:
If !File(caminho+bancodedadosSQL) //não funciona,

EndIf


só localiza se for local
Exemplo: C:\PASTA\BANCO.FDB
agora se for para ver se na rede existe o banco de dados, nao da certo.
Exemplo: 192.168.2.10:C:\PASTA\BANCO.FDB
o FBCREATE() cria no caminho certinho o arquivo BANCO.FDB, mas não consigo localizar.

Pesquisei outros substitutos do FILE() mas nenhum funcionou também.
Agora se não é possível fazer isto, terei que bloquear esta ação nas estações e deixar habilitado tão somente no SERVIDOR porque aí funciona e localiza se o arquivo existe ou não.
:))

Verificar o banco de dados

30 Ago 2019 11:52

Continua vaga a situação, mas vamos tentar....

Vai conversar com o servidor, e não com o arquivo.

Código:
lErro := .T.
BEGIN SEQUENCE
   // conecta com firebird
   lErro := .F.
END SEQUENCE
IF lErro
   ? "Não conectou"
ENDIF


Agora coloque o que usa pra conectar.
Se der erro é porque não conectou.

Verificar o banco de dados

30 Ago 2019 14:29

Boa tarde.
Sim, estou conectado com o servidor e criando o banco de dados quando ele não existe, porém se existir o banco de dados no servidor mesmo assim ele recria o banco de dados o que não pode ocorrer, só se não existir. certo.
Então o problema esta aqui, não segui pra frente ainda para fazer conexão e por fim as movimentações "insert" etc.
Fiz apenas a criação do banco de dados, vou partir agora para criar as tabelas.
Então eu não consigo descobrir quando em REDE no servidor a estação verificar se o banco existe ou não, isto no processo de verificação do banco de dados, não na inicialização do sistema para conectar.
Pretendo criar este processo, para o sistema mesmo, verificar se existe o banco de dados, criar o banco de dados, criar as tabelas, modificar as tabelas sem fazer manualmente através de uma administrador de banco de dados sql.

Consegui esclarecer, talvez nem tenha como ser feito isto com SQL, mas tudo bem, aí deixo para o sistema fazer isto somente no servidor e nunca na estação cliente.
:)Pos

Verificar o banco de dados

30 Ago 2019 19:53

No MySQL:

SHOW TABLES

SHOW CREATE TABLE

SELECT table_name AS TABELA FROM information_schema.TABLES WHERE table_schema='banco' AND table_name='tabela'

Verificar o banco de dados

30 Ago 2019 21:18

Grato pelo retorno, mas não é bem isto que eu preciso.
Obrigado

Verificar o banco de dados

30 Ago 2019 21:31

É com isso que faço testes no meu aplicativo: ADO + MySQL.

https://github.com/JoseQuintas/JoseQuintas/blob/master/source/ze_adoclass.prg

Métodos TableList(), TableExists(), FieldList(), FieldExists()

Só precisa ver o equivalente para sua base de dados e/ou seu conector.

Se for algo nativo do Harbour, tem função pra isso.
Se for pasta visível: File( "\\servidor\compartilhamento\nomearquivo" )
hb_Netio só pra isso seria exagero, mas também é possível.
If File( "net:\nomearquivo" )

Verificar o banco de dados

31 Ago 2019 10:53

Interessante.
Eu não conectei usando ADO, sou leigo em SQL tenho muito que aprender como funciona este banco de dados.
Estou usando a contrib do harbour hbfbird, pelo que vi funciona bem, estou fazendo testes e no momento estou na criação do banco vazio.
Grato
:xau

Verificar o banco de dados

05 Set 2019 15:56

Simples.
Tenta conectar/abrir o banco de dados, não abriu, talvez pq não exista, então crie-o.
Postar uma resposta