Delphi XE3 x BDE X Oracle 11g

Delphi

16/10/2013

Fala Galera.
Estou com o seguinte problema:
Uso o TQuery Ligado a um TDatabase (Paleta BDE Nativa do Delphi).
Ao fazer insert em um campo varchar2 usando o TQuery (ExecSQL) definindo o DataType (TParam) como String, de carácter com acentuação ou ç por exemplo e gravado no banco o caractere ¿. Se efetuar o insert pelo SQLPlus por exemplo, grava certo, ao consultar esse dado pelo TQuery.fieldbyname().asstring, retorna um caractere ? no lugar do Ç e letras com acentuação. Usando os componente DBX não tenho esse problema. Porem no momento não podemos migrar do DBE para o DBX. Alterei o LangDriver no BDE para 'ascii' ANSI, coloquei esse parâmetro no TDatabase, e o problema continua.

Desde já agradeço a atenção.

Configuração no DBE:
Usei Driver Oracle nativo e também ODBC;
DLL32=SQLORA8.DLL
LANGDRIVER='ascii' ANSI

segue configuração da sessão no SGDB:
"PARAMETER" "VALUE"
"NLS_LANGUAGE" "BRAZILIAN PORTUGUESE"
"NLS_TERRITORY" "BRAZIL"
"NLS_CURRENCY" "R$"
"NLS_ISO_CURRENCY" "BRAZIL"
"NLS_NUMERIC_CHARACTERS" ",."
"NLS_CALENDAR" "GREGORIAN"
"NLS_DATE_FORMAT" "DD/MM/RR"
"NLS_DATE_LANGUAGE" "BRAZILIAN PORTUGUESE"
"NLS_SORT" "WEST_EUROPEAN"
"NLS_TIME_FORMAT" "HH24:MI:SSXFF"
"NLS_TIMESTAMP_FORMAT" "DD/MM/RR HH24:MI:SSXFF"
"NLS_TIME_TZ_FORMAT" "HH24:MI:SSXFF TZR"
"NLS_TIMESTAMP_TZ_FORMAT" "DD/MM/RR HH24:MI:SSXFF TZR"
"NLS_DUAL_CURRENCY" "Cr$"
"NLS_COMP" "BINARY"
"NLS_LENGTH_SEMANTICS" "BYTE"
"NLS_NCHAR_CONV_EXCP" "FALSE"

Obs.: Acredito que problema nao esta no SGDB
Matheus Guerra

Matheus Guerra

Curtidas 0

Respostas

Matheus Guerra

Matheus Guerra

16/10/2013

Descobri a "solução".
Antes eu instalei o oracle cliente 11g marcando instalação "InstantClient". Depois testei instalando o oracle cliente 11g marcando a opção de instalação do mesmo como "Administrador", onde o BDE usou VENDOR INIT a dll da instalação cliente oracle "OCI.DLL" e não tive mas o problema citado acima.
Obrigado pela atenção.
GOSTEI 0
Fabio Colli

Fabio Colli

16/10/2013

Matheus, estou passando por um problema parecido. Talvez você poderia me ajudar.
SO:Windows 7;
SGBD: Oracle 11g XE;
Sistema legado feito em Delphi 7, usando BDE;

Eu tinha o Oracle 10g instalado e conectava normalmente, desinstalei o 10g e instalei o 11g. O sistema não conecta mais. Pela BDE também não conecta mais. Usando o PL/SQL conecta. Usando a própria ferramenta WEB também conecta.

Não dá erro, não emite nenhuma mensagem. Fica travado. Já deixei por mais de 24 horas e nada acontece.

Não tenho antivírus instalado na máquina, após atualizar a versão eu não reinstalei a BDE novamente. Achei que não seria necessário;

Desativei o Firewall do Windows, além de colocar uma entrada desbloqueando a porta 1521 para acesso irrestrito.

Já dei permissão no meu usuário e usuários autenticados no Windows nos diretórios:
* Onde fica a aplicação;
* No diretório do banco de dados;
* No diretório da BDE;

Já testei dando tnsping XE e retorna resultado.

Já não sei onde e como conseguir conectar.

Configuração da minha BDE:
Type: ORACLE
BATCH COUNT: 200
BLOB SIZE: 32
BLOBS TO CACHE: 64
ENABLE BCD: FALSE
ENABLE INTEGERS: FALSE
ENABLE SCHEMA CACHE: FALSE
LANGDRIVER:
LIST SYNONYMS: NONE
MAX ROWS: -1
NET PROTOCOL: TNS
OBJECT MODE: TRUE
OPEN MODE: READMRITE
ROWSET SIZE: 20
SCHEMA CACHE DIR:
SCHEMACACHE SIZE: 8
SCHEMACACHE TIME: -1
SERVER NAME: NoteFabioColli
SQLPASSTHRU MODE: SHARED AUTOCOMMIT
SQLQRYMODE:
USER NAME: UBUP4P

Agradeço já de atemão
GOSTEI 0
Fabio Colli

Fabio Colli

16/10/2013

Esqueci de colocar que as configurações da BDE de drive está assim:
VERSION 4.0
TYPE: SERVER
DLL32: SQLORAB.DLL
VENDOR INIT: OCI.DLL
DRIVER: FLAGS
TRACE MODE: O
DLL: SQLD_ORA.DLL
BATCH COUNT: 200
BLOB SIZE: 32
BLOBS TO CACHE: 64
ENABLE BCD: FALSE
ENABLE INTEGERS: FALSE
ENABLE SCHEMACACHE: FALSE
LANGDRIVER:
LIST SYNONYMS NONE
MAX ROWS: -1
NET PROTOCOL: TNS
OBJECT MODE: TRUE
OPEN MODE: READ/WRITE
ROWSET SIZE: 20
SCHEMA CACHE: DIR
SCHEMACACHE: SIZE 8
SCHEMACACHE: TIME -1
SERVER NAME: ORA_SERVER
SQLPASSTHRU MODE: SHARED AUTOCOMMIT
SQLQRYMODE:
USER NAME: MYNAME
GOSTEI 0
Matheus Guerra

Matheus Guerra

16/10/2013

Não sei se pode ser, mas talvez seja que esteja usando a dll OCI.DLL do oracle 10. Faça assim, nas variáveis de ambiente do windows (http://technet.microsoft.com/pt-br/library/cc668471.aspx) na variavel do sistema "Path", click em editar e retira o(s) diretorio(s) referentes a oracle client. Depois instale o oracle client do oracle 11g (http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html) faça download do cliente referente ao 11g. Instale oracle cliente 11g marcando a opção administrador no primeiro passo do instalador.

Boa sorte.
GOSTEI 0
Fabio Colli

Fabio Colli

16/10/2013

Value Matheus, vou tentar fazer isso.

Mas ontem eu baixei o cliente do Oracle 11g e não tinha instalação. Só tinha um arquivo *.zip com muitas dlls dentro. Eu copiei a dll para dentro da BDE e ainda assim não funcionou.

Vou ver se acho esse instalador.

Valeu mesmo pela dica.
GOSTEI 0
Fabio Colli

Fabio Colli

16/10/2013

Matheus, com sua dica eu consegui conectar usando o BDE Admin. Show de Bola.

Mas ainda falta fazer a aplicação conectar. Bom era para ela conectar também. Agora vou fuçar mais um pouco para fazer a conexão.

Valeu cara.
GOSTEI 0
Matheus Guerra

Matheus Guerra

16/10/2013

Flw... Ok...
GOSTEI 0
Fabio Colli

Fabio Colli

16/10/2013

Consegui conectar com a aplicação também. Era só registrar a OCI.DLL no system32.

Eu achei estranho, pois com o Oracle 10g não precisei fazer nada disso e ainda não tinha o client instalado.

Mas cara, valeu mesmo pela atenção.
GOSTEI 0
Matheus Guerra

Matheus Guerra

16/10/2013

Talvez com oracle 10g apenas com as dll's nativa do BDE já fazia a conexão. Vai saber né kkkkkkkkkkk.

Flw,
Por nada.
GOSTEI 0
POSTAR