Delphi XE3 x BDE X Oracle 11g
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
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
Curtidas 0
Respostas
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.
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
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
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
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
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
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.
Boa sorte.
GOSTEI 0
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.
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
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.
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
16/10/2013
Flw... Ok...
GOSTEI 0
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.
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
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.
Flw,
Por nada.
GOSTEI 0