
Um Banco de Dados OpenBASE pode ser acessado como um objeto COM por ambientes de programação Windows, tais como Visual Basic (VB), Visual Basic for Applications (VBA) e Delphi. Também podem ser utilizados scripts, tais como Perl, Python, Tcl … etc … além da linguagem JAVA.
Os exemplos apresentados neste manual foram feitos em Visual Basic, Delphi, PHP, ASP, Perl e Python.
As funções (propriedades e métodos) COM do OpenBASE se encontram no módulo OBCOM.DLL, a ser registrado pelo comando regsvr32 obcom.dll, ou através de outras ferramentas. A type library correspondente chama-se OBCOM.TLB e é opcional.
O módulo OBCOM.DLL (ou ODBCOM.DLL), cujos métodos apontam para as funções contidas na DLL ROTWIN32.DLL (ou CLIWIN32.DLL) do OpenBASE, deve residir no diretório System do Windows ou num diretório corretamente especificado no percurso (path).
Veja a seguir, em Visual Basic, como instanciar, ativar e desativar um objeto COM do OpenBASE:
Dim a as object
Private Sub Form_Load()
Set a = CreateObject("OpenBase.OBcom.1")
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set a = Nothing
End Sub
A seguir relacionamos todos os métodos definidos no componente OBCOM assim como suas propriedades.
Objetivo e utilização:
Serve para abrir um Banco de Dados OpenBASE.
Sintaxe:
Long OAbreBancoDeDados(bstr banco, bstr nivel, long segurança, long modo)
Propriedades:
As propriedades deste métoto representam :
|
Banco |
Nome do arquivo dicionário do Banco de Dados. Deve incluir o percurso quando diferente do percurso default. |
|
Nível |
Palavra de nível de autorização para acesso. |
|
Segurança |
Código (ou senha) de segurança. |
|
Modo |
Modo de abertura do Banco. |
Exemplos:
Dim ret as long
ret = a.OAbreBancoDeDados("EXEMPLO","",1,2)
Objetivo e utilização:
Fecha um Banco de Dados previamente aberto.
Sintaxe:
long OFechaBancoDeDados(long nada)
Propriedades:
Exemplos:
Dim ret as long
ret = a.OFechaBancoDeDados(0)
Objetivo e utilização:
Retorna o valor do item indicado do arquivo indicado que deve ser lido para area intermediária antes de ser chamada esta função utilizando OLeProximoRegistroSequencial, OleRegistroAnteriorSequencial, OLeProximoRegistroSubcadeia, OLeRegistroPorEndereco, OLeProximoRegistroCadeia, OLeRegistroAnteriorCadeia, OLeProximoRegistroPorPrefixo, OLeRegistroAnteriorPorPrefixo, OleRegistroPorChavePrimaria.
Sintaxe:
string OPegaItem(bstr arquivo, bstr item)
Propriedades:
Exemplos:
Dim v as String
v = a.OPegaItem("PESSOA","IDADE")
Objetivo e utilização:
Quarda o valor do item indicado do arquivo indicado em area intermediária a ser gravada utilizando a função OIncluiTodoRegistro, OAlteraTodoRegistroCascata,OAlteraTodoRegistroPoeNulo, OAlteraTodoRegistro.
Sintaxe:
long OPoeItem(bstr arquivo, bstr item, bstr valor)
Propriedades:
Exemplos:
Dim ret as long
ret = a.OPoeItem("PESSOA","IDADE","10")
Objetivo e utilização:
Retorna o registro do arquivo indicado que deve ser lido para area intermediária antes de ser chamada esta função utilizando OLeProximoRegistroSequencial, OleRegistroAnteriorSequencial, OLeProximoRegistroSubcadeia, OLeRegistroPorEndereco, OLeProximoRegistroCadeia, OLeRegistroAnteriorCadeia, OLeProximoRegistroPorPrefixo, OLeRegistroAnteriorPorPrefixo, OleRegistroPorChavePrimaria.
O arquivo só pode ter itens dos tipos U, N e S.
Sintaxe:
string OPegaRegistro(bstr arquivo)
Propriedades:
Exemplos:
Dim v as String
v = a.OPegaRegistro("PESSOA")
Objetivo e utilização:
Quarda o registro do arquivo indicado em area intermediária a ser gravada utilizando a função OIncluiTodoRegistro, OAlteraTodoRegistroCascata,OAlteraTodoRegistroPoeNulo, OAlteraTodoRegistro.
O arquivo só pode ter itens dos tipos U, N e S.
Sintaxe:
long OPoeRegistro(bstr arquivo, bstr registro)
Propriedades:
Exemplos:
Dim ret as long
ret = a.OPoeRegistro("PESSOA","Antonio 10")
Objetivo e utilização:
Lê o próximo registro em um Arquivo do Banco de Dados para area intermediária.
Sintaxe:
long OLeProximoRegistroSequencial(bstr arquivo)
Propriedades:
A rotina recebe o parâmetro:
|
Arquivo |
Nome do arquivo do Banco de Dados que será lido. |
Exemplos:
Objetivo e utilização:
Lê o registro anterior em um Arquivo do Banco de Dados para area intermediária.
Sintaxe:
long OLeRegistroAnteriorSequencial(bstr arquivo)
Propriedades:
A rotina recebe parâmetro idêntico ao da rotina anterior.
:
|
Arquivo |
Nome do arquivo do Banco de Dados que será lido. |
Exemplos:
Objetivo e utilização:
Retorna o ponteiro de leitura seqüencial para inicio(fim) do Arquivo. Uma chamada a seguir a rotina OLeProximoSequencial devolverá o primeiro registro no arquivo, já uma chamada a OLeAnteriorSequencial retornará o último registro. Recebe um único parâmetro correspondente ao nome do arquivo a ser reinicializado.
Sintaxe:
long OReiniciaSequencial(bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Lê um registro de um Arquivo entidade para area intermediária, cuja endereço seja igual ao parâmetro endereço.
Sintaxe:
long OLeRegistroPorEndereco(bstr arquivo, long endereco)
Propriedades:
Exemplos:
Objetivo e utilização:
Determina que a leitura no arquivo indicado pelo parâmetro arq seja iniciada a partir do registro com valor da chave igual ao parâmetro valor.
Sintaxe:
long OPosicionaNoRegistroPorChave(bstr arq,bstr valor)
Propriedades:
Exemplos:
Objetivo e utilização:
Numa leitura seqüencial posiciona o ponteiro de leitura de Arquivo no registro cujo endereço físico é passado no parâmetros Endereço.
Sintaxe:
long OPosicionaNoRegistro(bstr arquivo, long endereço)
Propriedades:
Exemplos:
Objetivo e utilização:
Seleciona uma cadeia, ou seja um conjunto de registros em um Arquivo que um dado item Chave tenha o mesmo Valor. Torna os registros selecionados disponíveis para a leitura por LeProximoCadeia e LeAnteriorCadeia.
Sintaxe:
long OIniciaCadeia(bstr arquivo, bstr chave, bstr valor)
Propriedades:
Exemplos:
Os parâmetros são recebidos pela rotina são:
|
Arquivo |
Nome do arquivo do Banco de Dados aberto. |
|
Chave |
Nome do item chave do arquivo. |
|
Valor |
Valor do item chave a selecionar, deve ser uma cadeia de caracteres ASCII do mesmo tamanho e conteúdo compatível com o item chave. |
Objetivo e utilização:
Coloca em Mensagem a última mensagem de erro ocorrida no acesso ao Banco de Dados. Mensagem deve apontar para uma área de no mínimo 100 bytes. Retorna tambem uma string com a mensagem.
Sintaxe:
string OObtemMensagem(bstr mensagem)
Propriedades:
Exemplos:
Objetivo e utilização:
Lê o próximo registro sequencialmente que contenha subcad no valor no item. Os registros serão lidos para área intermediária na ordem em que foram incluídos, os parâmetros são compatíveis com os do mesmos nome descritos acima.
Sintaxe:
long OLeProximoRegistroSubcadeia(bstr arquivo, bstr item, bstr subcad)
Propriedades:
Exemplos:
Objetivo e utilização:
Inclui no Arquivo o registro guardado em area intermediária utlizando a rotina OPoeItem ou OPoeRegistro.
Sintaxe:
long OIncluiTodoRegistro(bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Retorna o numero do arquivo indicado
Sintaxe:
int OPegArq(bstr arquivo)
Propriedades:
Exemplos:
Exemplo:
Dim arq as int
arq = OPegArq("PESSOA")
Objetivo e utilização:
Lê o próximo registro selecionado por IniciaCadeia do primeiro ao último. Os registros serão lidos para área intermediária na ordem em que foram incluídos, os parâmetros são compatíveis com os do mesmos nome descritos acima.
Sintaxe:
long OLeProximoRegistroCadeia(bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Lê o registro anterior selecionado por IniciaCadeia do último ao primeiro. Os registros serão lidos para area intermediária na ordem inversa em que foram incluídos, os parâmetros são compatíveis com os do mesmos nome descritos acima.
Sintaxe:
long OLeRegistroAnteriorCadeia (bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Reúne o Banco de Dados passados pelos parâmetros, ao banco aberto anteriormante, incorporando o seu dicioário ao dicionário do banco já aberto e inserindo os arquivos entidade como tabelas do banco já existente, e os arquivos relacionamentos como consultas(visões). Tais arquivos não poderão ser atualizados, apenas consultados.
Permite com isto, abrir mais de um Banco de Dados, para uma mesma aplicação.
Sintaxe:
long OJuntaBancoDeDados(bstr banco, bstr nivel, long segur, long modo)
Propriedades:
Exemplos:
Objetivo e utilização:
Seleciona uma cadeia por prefixo, ou seja um conjunto de registros em um Arquivo que um dado item Chave do tipo cadeia se inicie pelo mesmo Valor, torna os registros selecionados disponíveis para a leitura com as duas rotinas descritas a seguir. Os parâmetros são similares aos do IniciaCadeia, sendo que o parâmetro Valor deve ter um tamanho menor ou igual ao do item Chave.
Sintaxe:
long OIniciaPorPrefixo(bstr arquivo, bstr chave, bstr valor)
Propriedades:
Exemplos:
Objetivo e utilização:
Lê o próximo registro selecionado por IniciaPorPrefixo a partir do primeiro até o último em ordem alfabética da Chave selecionada para area intermediária. O parâmetro é compatível com o do mesmo nome descrito acima.
Sintaxe:
long OLeProximoRegistroPorPrefixo(bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Lê o registro anterior selecionado por IniciaPorPrefixo a partir do último até o primeiro em ordem alfabética invertida da Chave selecionada para area intermediária. O parâmetro é compatível com o do mesmo nome descrito acima.
Sintaxe:
long OLeRegistroAnteriorPorPrefixo(bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Lê um registro de um arquivo entidade para area intermediária, cuja chave primária seja igual ao parâmetro valor.
Sintaxe:
long OLeRegistroPorChavePrimaria(bstr arquivo, bstr valor)
Propriedades:
Exemplos:
Objetivo e utilização:
Seleciona um item chave de arquivo para ordenação da leitura sequencial.Por default, é assumido o primeiro item chave do arquivo.
Sintaxe:
long OEscolheChave(bstr arquivo, bstr chave)
Propriedades:
Exemplos:
Objetivo e utilização:
Exclui no arquivo o último registro lido.
Sintaxe:
long OExcluiRegistro(bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Indica exclusão do registro e seus subordinados com a opção cascata.
Sintaxe:
long OExcluiRegistroCascata(bstr arq)
Propriedades:
Exemplos:
Objetivo e utilização:
Indica exclusão do registro e seus subordinados com a opção poenulo.
Sintaxe:
long OExcluiRegistroPoeNulo(bstr arq)
Propriedades:
Exemplos:
Objetivo e utilização:
Permite a inclusão de um registro no arquivo indicado pelo parâmetro arq, antes do registro corrente.
Sintaxe:
long OIncluiTodoRegistroNaCadeia(bstr arq)
Propriedades:
Exemplos:
Objetivo e utilização:
Altera um registro, com a opção de modificação em cascata, a partir do registro guardado em area intermediária utlizando a rotina OPoeItem ou OPoeRegistro.
Sintaxe:
long OAlteraTodoRegistroCascata(bstr arq)
Propriedades:
Exemplos:
Objetivo e utilização:
Permite a alteração de um registro, atribuindo nulo nos itens suboordinados a este.
Sintaxe:
long OAlteraTodoRegistroPoeNulo(bstr arq)
Propriedades:
Exemplos:
Objetivo e utilização:
Altera o último registro lido em arquivo a partir do registro guardado em area intermediária utlizando a rotina OPoeItem ou OPoeRegistro.
Sintaxe:
long OAlteraTodoRegistro(bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Desfaz as alterações feitas no Banco de Dados desde a última OIniciaTransacao.
Sintaxe:
long ODesfazTransacao(long nada)
Propriedades:
Exemplos:
Objetivo e utilização:
Inicia uma transação. Todas as alterações feitas no Banco de Dados após esta rotina e antes da rotina FinalizaTransação constituirão uma transação lógica e serão desfeitas em conjunto se for usado a rotina ODesfazTransacao ou o utilitário BDRECU.
Sintaxe:
long OBloqueia(long nada)
long OIniciaTransacao(long nada)
Propriedades:
Exemplos:
Objetivo e utilização:
Finaliza a transação iniciada por OIniciaTransacao, após esta rotina as alterações anteriormente feitas no Banco de Dados não serão desfeitas.
Sintaxe:
long ODesbloqueia(long nada)
long OFinalizaTransacao(long nada)
Propriedades:
Exemplos:
Objetivo e utilização:
Indica o arquivo a ser esvaziado.
Sintaxe:
long OEsvaziaArquivo(bstr arq)
Propriedades:
Exemplos:
Objetivo e utilização:
Rotina utilizada para especificar opções, tais como:
Nas funções LigaOpção/Desliga Opção para se ligar/desligar a opção de abrir todos os arquivos de um banco foi incluida a opção "open". Para se ligar/desligar a opção de século foi incluida a opção "century".
Sintaxe:
long OLigaOpcao(bstr opc)
Propriedades:
Exemplos:
Exemplo:
ret=OLigaOpcao("century")
Objetivo e utilização:
Deve ser utilizada após o uso das rotinas que requerem a rotina LigaOpcao.
Para se ligar/desligar a opção de século foi incluida a opção "century".
Sintaxe:
long ODesligaOpcao(bstr opc)
Propriedades:
Exemplos:
ret=ODesligaOpcao("open")
Objetivo e utilização:
Cria uma ligação com o nó da rede definido por nome_host. Após esta rotina um banco pode ser aberto remotamente no host nome_host desde que aí se encontre em execução o utilitário BDSERV (servidor) do OpenBASE. Esta rotina fecha uma ligação que tenha sido criada anteriormente.
Sintaxe:
long OIniciaServidor(bstr nome_host)
Propriedades:
Exemplos:
result = com.OIniciaServidor("localhost")
Objetivo e utilização:
Esta rotina fecha uma conexão anteriormente efetuada via OIniciaServidor.
Sintaxe:
long OIniciaServidor()
Propriedades:
Exemplos:
Exemplo em VB:
Sub IDM_EXIT_Click ()
result = a.OCloseDB()
result = a.OFinalizaServidor()
If result <> 0 Then
mens = "FinalizaServidor " + hostname + " erro!"
MsgBox (mens)
Else
mens = "FinalizaServidor " + hostname + " OK!"
MsgBox (mens)
End If
Unload frm_main
End Sub
Objetivo e utilização:
Retorna o endereço físico do último registro lido no Arquivo ou zero se nenhum registro foi lido, pode ser usado para se testar fim de arquivo (EOF) após uma leitura.
Sintaxe:
long OObtemEnderecoAtual(bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Retorna o numero de registros na cadeia, isto é o número de registros selecionados pela última execução da rotina OIniciaCadeia no Arquivo.
Sintaxe:
long OObtemRegistrosNaCadeia(bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Retorna o numero de registros no Arquivo.
Sintaxe:
long OObtemRegistrosNoArquivo(bstr arquivo)
Propriedades:
Exemplos:
Objetivo e utilização:
Retorna para o parâmetro de saída o diretório do dicionário de dados.
Sintaxe:
long OObtemDiretorio (bstr saidir)
Propriedades:
Exemplos:
Exemplo em VB:
Sub Command3D1_Click ()
Dim aaa As String * 80
Dim result As Integer
result = a.OObtemDiretorio(aaa)
ppp.Caption = Trim(aaa)
End Sub
Objetivo e utilização:
Informa o nome do cliente em relação ao qual a cópia do Banco de Dados OpenBASE foi gerada.
Sintaxe:
long OObtemCliente(bstr cliente)
Propriedades:
Exemplos:
Objetivo e utilização:
Obtém a quantidade de itens chaves no arquivo de dados, dado o seu número.
Sintaxe:
long OObtemQtdChaves(integer NoArq)
Propriedades:
Exemplos:
Objetivo e utilização:
Obtém o número sequencial do item, dado o seu nome.
Sintaxe:
long OObtemNumeroDoItem(bstr NomeItem)
Propriedades:
Exemplos:
Objetivo e utilização:
Obtem a quantidade de ligações em um arquivo de dados..
Sintaxe:
long OObtemQtdLigacoes(int NoArq)
Propriedades:
Exemplos:
Objetivo e utilização:
Obtem o número sequencial do arquivo de dados
Sintaxe:
long OObtemNumeroDoArquivo(bstr NomeArq)
Propriedades:
Exemplos:
Objetivo e utilização:
Obtem quantidade de arquivos que o arquivo fornecido está subordinado.
Sintaxe:
long OObtemQtdJuncoes(int NoArq)
Propriedades:
Exemplos:
Objetivo e utilização:
Obtem a quantidade de campos virtuais que compõem um item virtual.
Sintaxe:
long OObtemQtdVirtuais(int NoItem)
Propriedades:
Exemplos:
Objetivo e utilização:
Obtem a quantidade de itens básicos no arquivo.
Sintaxe:
long OObtemQtdItensBasicos(int NoArq)
Propriedades:
Exemplos:
Objetivo e utilização:
Obtem a quantidade de itens que compõem o item redefinido.
Sintaxe:
long OObtemQtdRedefinicoes(int NoItem)
Propriedades:
Exemplos:
Objetivo e utilização:
Grava em um arquivo local (parametro arqsaída) um item memo (parametro item) de um determinado arquivo (parametro arq).
Sintaxe:
long OPegaGravaItemMemo (bstr arq, bstr item, bstr arqsaida)
Propriedades:
Exemplos:
Sub list_depart_DblClick ()
If Len(Dir("c:\dlls\temp.txt")) <> 0 Then
Kill "c:\dlls\temp.txt"
End If
If Len(Dir("c:\dlls\temp.bmp")) <> 0 Then
Kill "c:\dlls\temp.bmp"
End If
Dim buffer As String * 6
Dim howmany As Long
‘posiciona no registro
aa = a.OObtemRegistrosNoArquivo("dept")
result = a.OReiniciaSequencial("dept")
For i = 1 To aa
result = a.OLeProximoSequencial("dept")
buffer=a.OPegaRegistro("dept")
If Mid(buffer, 1, 6) = Mid(list_depart.List(list_depart.ListIndex), 1, 6) Then
Exit For
End If
Next i
frm_edit.MousePointer = 11
‘Lê arquivo de descrição do departamemto e grava num arquivo local
result = a.OObtemTamanhoMemo("dept", "dept_desc", howmany)
result = a.OPegaGravaItemMemo("dept", "dept_desc","c:\dlls\temp.txt")
If FileLen("c:\dlls\temp.txt") <> 0 Then
edit_desp.Text = Space(0)
Dim tempchar As String * 1000
Open "c:\dlls\temp.txt" For Binary Access Read As #1
Do While Not EOF(1)
Get #1, , tempchar
edit_desp.Text = edit_desp.Text + tempchar
Loop
Close #1
Else
edit_desp.Text = Space(0)
End If
song1.Caption = "tamanho da descrição do departamento:" + Str(howmany)
***Este bloco do programa é usado para a função PegaGravaItemMemo***********
result = a.OObtemTamanhoMemo("dept", "dept_music", howmany)
result = a.OPegaGravaItemMemo("dept", "dept_music", "c:\dlls\temp.BMP")
If FileLen("c:\dlls\temp.bmp") <> 0 Then
frm_edit.Image_music.Picture = LoadPicture("c:\dlls\temp.bmp")
Else
frm_edit.Image_music.Picture = LoadPicture()
End If
song2.Caption = "tamanho da musica do departamento:" + Str(howmany)
frm_edit.MousePointer = 0
End Sub
Objetivo e utilização:
Essa função lê um arquivo local (entra) e grava para um especificado item memo (item) de um determinado arquivo (arq).
Sintaxe:
long OLePoeItemMemo (bstr arq, bstr item, bstr entra)
Propriedades:
Exemplos:
Exemplo em VB:
Sub cmd_ok_Click ()
Dim buffer As String * 14
Dim temp_buffer As String * 6
Dim result As Integer
‘Entra nome do departamento no banco
‘Pega o número máximo de dept_code
Filename = "dept"
cc = a.OObtemRegistrosNoArquivo(Trim(Filename))
result = a.OReiniciaSequencial("dept")
For i = 1 To cc
result = a.OLeProximoRegistroSequencial("dept")
temp_buffer = a.OPegaRegistro("dept")
Next i
aa = Mid(temp_buffer, 1, 6)
maincode = Format(Val(aa) + 1, "000000")
buffer = maincode + edit_department_name.Text
‘Inclui registro
result=a.OPoeRegistro("dept",buffer)
result = a.OIncluiTodoRegistro(Trim(Filename))
‘Posiciona no novo registro
result = a.OLePorChavePrimaria("dept", maincode)
‘Entre descrição do departamento no banco
buffer1 = edit_department_description.Text
If Len(Trim(buffer1)) <> 0 Then
Open "c:\dlls\temp.txt" For Output As #1
Print #1, buffer1
Close #1
result = a.OReadPutItemMemo("dept", "dept_desc", "c:\dlls\temp.txt")
End If
‘Entra musica do departamento no banco
If Len(Trim(putfilename)) <> 0 Then
result = a.OReadPutItemMemo("dept", "dept_music", putfilename)
End If
‘fecha formulário corrente
Unload frm_add
End Sub
Objetivo e utilização:
Deleta um item memo especificado de um determinado arquivo.
Sintaxe:
long OExcluiItemMemo (bstr arq, bstr item)
Propriedades:
Exemplos:
Exemplo em VB:
Sub cmd_delete_Click ()
Dim buffer As String * 8
‘posiciona no registro
result = a.OLePorChavePrimaria("dept", Mid(list_depart.List(list_depart.ListIndex), 1, 6))
frm_edit.MousePointer = 11
‘Exclui arquivo de descrição do departamento no banco
result = a.OExcluiItemMemo("dept", "dept_desc")
‘Exclui arquivo musica do departamento no banco
result = a.OExcluiItemMemo("dept", "dept_music")
‘Exclui registro do departmento no banco
result = a.OExcluiRegistro("dept")
‘reset listbox
list_depart.Clear
Call reset_list
frm_edit.MousePointer = 0
End Sub
Objetivo e utilização:
Indica o diretório no qual esta definido o item memo, do arquivo selecionado.
Sintaxe:
string OObtemPercursoArquivoMemo(bstr arq,bstr item)
Propriedades:
Exemplos:
Objetivo e utilização:
Retorna o tamanho de um determinado item memo especificado (parametro item ) de um determinado arquivo especificado (arq).
Sintaxe:
long OObtemTamanhoMemo (bstr arq, bstr item)
Propriedades:
Exemplos:
Exemplo em VB:
result = a.OObtemTamanhoMemo("dept", "dept_music")
