Página 1 de 1
Acesso a Oracle
Enviado: 25 Nov 2013 13:14
por Hasse
Boa tarde colegas.
Preciso acessar um Banco Oracle.
Estou batendo cabeça, gente.
Usar: A)-ADO, ou B)-conexão direta com o Oracle ( é assim que se denomina ? ) ?
O ADO precisa instalar um aplicativo ?
Conexão direta com o Oracle. Na linha abaixo:
Código: Selecionar todos
nc := SR_ADDCONNECTION( CONNECT_ORACLE, "OCI=127.0.0.1;UID=SYSTEM;PWD=kl6qaxv9;TNS=XE" )
Informa a falta da função SR_ADDCONNECTION(). Onde ela se encontra ? O que está faltando ?
Peço ajuda passa a passo (para novato mesmo...)
Creio que, depois de conectado, me viro, pois terei ajuda de um especialista em Oracle.
Acesso a Oracle
Enviado: 25 Nov 2013 13:37
por alxsts
Olá!
Veja o tópico
Exemplo Conexão Oracle e Executando uma SP.
Utilize o recurso de busca do fórum. Existem outros exemplos.
Acesso a Oracle
Enviado: 25 Nov 2013 14:02
por Hasse
Boa tarde alxsts.
Obrigado pelo teu retorno em tempo record.
OK. Já consegui compilar, mas falta "algo" .....
Código: Selecionar todos
....
Local oConnection := Win_OleCreateObject( "ADODB.connection" )
Local oRecordSet := Win_OleCreateObject( "ADODB.recordset" )
Local oCommand := Win_OleCreateObject( "ADODB.Command" )
Local oErrorCmd
cConexao:="Provider=OraOLEDB.Oracle;Data Source=XE;User ID=system;Password=sistema;FetchSize=100;CacheType=Memory;PLSQLRSet=True;"
....
....
oConnection:Open( cConexao )
O compilador informa a falta das funções
Win_OleCreateObject
Win_OleCreateObject(
Win_OleCreateObject(
Em qual arquivo temos elas ?
Acesso a Oracle
Enviado: 25 Nov 2013 16:04
por alxsts
Olá!
Está na lib HbWin. Acrescentar: -lhbwin.
O tópico
Harbour+ADO+SQL Server 2008 + Automação OLE - Como fazer? pode ter algum conteúdo que te ajude.
Acesso a Oracle
Enviado: 25 Nov 2013 21:15
por Hasse
Boa noite alxsts.
Muito bom. Esta tua última mensagem resolveu o problema. Copiei o PRG da página
Harbour+ADO+SQL Server 2008 + Automação OLE - Como fazer? de tua autoria.
Bastou inserir a Lib
Hbwin.lib e a compilação passou sem erro.
Amanhã irei até o cliente para obter o IP e a senha para efetuar a conexão.
Você poderia me orientar sobre os conteúdos dos diversos campos desta linha ?
Código: Selecionar todos
cConexao:="Provider=OraOLEDB.Oracle; " +;
"Data Source=XE; " +;
"User ID=system; " +;
"Password=sistema; " +;
"FetchSize=100; " +;
"CacheType=Memory; " +;
"PLSQLRSet=True;"
Onde insiro o IP do Servidor ?
E os outros campos, quais devo alterar e quais manter ?
Mais uma vez obrigado pela tua atenção.
Acesso a Oracle
Enviado: 26 Nov 2013 10:49
por alxsts
Olá!
Fico feliz em saber que você conseguiu avançar.
Quanto às questões
Hasse escreveu:Onde insiro o IP do Servidor ?
E os outros campos, quais devo alterar e quais manter ?
se for trabalhar com IP, o mesmo deverá ser inserido no item "Data Source=". O mais comum é criar uma fonte de dados ODBC (de sistema) para o banco de dados que vai utilizar (Oracle, no teu caso) e no Data Source colocar o nome da fonte de dados que foi criada (no exemplo, criei uma fonte de dados ODBC para Oracle eXpress Edition e dei a ela o nome de XE.
Quanto aos demais parâmetros da string de conexão, você deverá usar conforme o banco de dados que vai conectar. No site
Connection Strings você encontrará exemplos para todos os bancos de dados.
Acesso a Oracle
Enviado: 26 Nov 2013 13:47
por Hasse
Boa tarde Alexandre.
A string de conexão ficou assim:
Código: Selecionar todos
cCn := "Provider=OraOLEDB.Oracle;" +;
"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.250)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=dbprod)));" +;
"User ID=LABORATORIO;" +;
"Password=aloisklab;" +;
"FetchSize=100;" +;
"CacheType=Memory;" +;
"PLSQLRSet=True;"
Ao rodar apresenta o erro abaixo em uma janela retangular em fundo vermelho:
na linha de abertura
Não falta algum driver ?
Algum específico do Oracle ? (OraOLEDB.Oracle)
Acesso a Oracle
Enviado: 26 Nov 2013 14:58
por alxsts
Olá!
Infelizmente fica difícil ajudar à distância nesta questão.
Creio que não falte instalar nada. O erro pode ser nos parâmetros de conexão (verifique com quem os passou a você) ou pode ser nos parâmetros que você está passando para a conexão ADO (creio que você esteja usando isso), particularmente nas configurações do objeto record set.
Código: Selecionar todos
With Object oRs
31
32 :cursorType := adOpenForwardOnly //adOpenForward //adOpenDynamic adOpenStatic //
33 :activeConnection( oCn )
34 :cursorLocation = adUseServer
35 :maxRecords = 100000
36 :cacheSize = 100
37 :source := cSql
38
39 :open()
40
41 :moveFirst()
42
43 If ! :Eof()
44 aRs := :GetRows
45 Else
46 ? "RS vazio"
47 Endif
Qual a versão do Oracle usada? Poderia colocar o código que você está usando? (Não precisa publicar o usuário e password do banco de dados do cliente).
Acesso a Oracle
Enviado: 26 Nov 2013 15:11
por Hasse
Boa tarde Alexandre.
Segue o Código usado.
Código: Selecionar todos
**
#include "ado.ch"
#include "set.ch"
#include "hbcompat.ch"
#include "Oracle.ch"
#include "sqlora.ch"
**
PROCEDURE Main()
*
LOCAL oConect, oRs, oErr, aRs, cSql
*
Try
*
Set( _SET_DATEFORMAT, "dd/mm/yyyy" )
*
//oConect := CreateObject( "ADODB.Connection" )
oConect := TOLEAUTO():New("ADODB.Connection")
*
// Oracle XE
cCn := "Provider=OraOLEDB.Oracle;" +;
"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.250)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=dbprod)));" +;
"User ID=LABORATORIO;" +;
"Password=sistema;" +;
"FetchSize=100;" +;
"CacheType=Memory;" +;
"PLSQLRSet=True;"
*
clear
? cCn + "<<=="
? "==================================" && Esta linha passa da execução
*
oConect:Open( cCn ) && Esta NÃO passa. Aqui dá o erro !!!!!!!!
*
? "----------------"
? len( oConect )
? "----------------"
*
// oRs := CreateObject("ADODB.RecordSet")
oRs := TOLEAUTO():New("ADODB.RecordSet")
*
With Object oRs
*
:cursorType := adOpenForwardOnly //adOpenForward //adOpenDynamic adOpenStatic //
:activeConnection( oConect )
:cursorLocation = adUseServer
:maxRecords = 100000
:cacheSize = 100
:source := cSql
*
:open()
*
:moveFirst()
*
If ! :Eof()
aRs := :GetRows
Else
? "RS vazio"
Endif
*
:moveFirst()
*
While ! :eof()
*
QOut( :Fields( "idOrder" ):value, "-", ;
:Fields( "dtOrder" ):Value, "-", ;
Transform( :Fields( "vlTotalOrder" ):Value, "@E 999,999.99" ) )
:MoveNext()
*
Enddo
*
? LTrim( Str( Len( aRs ) ) ), " Records"
*
End With
*
*/
*
Catch oErr
Alert( "Error: " + oErr:Operation + " -> " + oErr:Description )
*
// Finnaly
End
*
* oConect:Close()
oConect := Nil
oRs := Nil
*
RETURN
Em tempo: Estamos trabalhando em conjunto com os Administradores do Banco Oracle, lado a lado, comigo.
Acesso a Oracle
Enviado: 26 Nov 2013 16:09
por Hasse
Tentei usar a função
SR_AddConnection de um outro exemplo:
Código: Selecionar todos
oConexao := SR_AddConnection(CONNECT_ORACLE, "OCI=nomeservidor;UID=nomeusu;PWD=senha;TNS=nometns")
Obtenho o erro:
Error: Unresolved external '_HB_FUN_SR_ADDCONNECTION' referenced from D:\DEV2\TESTES\T_SQL\ADO2\OBJ\ADO2.OBJ
Acesso a Oracle
Enviado: 26 Nov 2013 19:38
por alxsts
Olá!
Bem, neste seu tópico mais recente, você mudou para SQLRDD e aí não posso opinar pois desconheço o assunto. Só sei que é uma lib paga que só funciona com xHarbour (não funciona com Harbour). Tem que comprar o produto e linkar a lib SQL.Lib na tua aplicação . Tem um exemplo de código
neste tópico.
Prosseguindo com a alternativa anterior (ADO), ele nem chega a conectar. Então, o problema é na conexão. Você não informa qual versão do Oracle está usando e nem se criou uma fonte de dados ODBC mas, o melhor modo de se descobrir a conexão é deixar o Windows criar uma e depois copiar. Veja se consegue ver a imagem abaixo e seguir os passos descritos.
(Edit para adicionar informações)
Acesso a Oracle
Enviado: 26 Nov 2013 21:00
por Hasse
Boa noite Alexandre.
Em relação à biblioteca SR_* en tendido, e assunto descartado.
Realmente esqueci de informar a versão do Oracle. É a 10g.
Voltando ao assunto anterior:
Realmente nos faltou efetuar o passo 2 que você muito bem explicou nesta última mensagem.
No meu NB, mesmo sem a possibilidade de conectar com o Oracle, segui estas instruções e ao final a string de conexão lá estava no editor de texto.
Se esta string ainda continuar a mesma quando o Oracle estiver presente muito. Se nãom, será necessário somente refazer o passo 2.
Amanhã pela manhã faremos o teste com esta nova string.
Mais uma vez obrigado.
Sds.
Acesso a Oracle
Enviado: 27 Nov 2013 01:08
por alxsts
Olá!
Imagino que esta versão do Oracle 10g que você vai utilizar seja uma versão completa, corporativa.
Aproveite a oportunidade e ingresse no mundo Oracle. É muito bom e rentável. Instale no teu notebook uma versão mais leve e atualizada, o Oracle 11g Express Edition, que pode ser baixado da
área de downloads do site da Oracle.
Torne-se um membro da
Oracle Technology Network (OTN) e acesse materiais de treinamento, fóruns e dowloads, tudo gratuitamente. No topo desta página há um menu. Selecione o item "Select a Country/Region" e escolha Brazil para traduzir a página para português.
Boa sorte!
Acesso a Oracle
Enviado: 27 Nov 2013 13:23
por Hasse
Boa tarde colega Alexandre.
EUREKA !!!!! - Banco conectado !!!!!!!!!!!!! - Viva !!!!!!!!!!!!!
Muito obrigado, Alexandre.
Os méritos são todos seus Alexandre. OK, gastamos alguns neurônios, mas sem a tua ajuda ainda estaríamos tateando no escuro.
Então essa do passo 2, cara.... mais parece uma "gambiarra" do Windows (só mais uma, entre tantas outras....).
Agora, o passo seguinte, decifrar o funcionamento das funções, objetos, navegação, etc., etc., etc..........
Tens alguma sugestão em termos de documento para consulta ?
Sds.