MISTÉRIO NO VB.NET COM ORACLE

 Tópico anterior Próximo tópico Novo tópico

MISTÉRIO NO VB.NET COM ORACLE

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#470122 - 28/12/2016 10:36:01

MARCOS

Cadast. em:Dezembro/2003


Bom dia,Colegas!
Estou com um problema, inusitado!
Tenho de fazer uma simples consulta na base Oracle (10G).
Meu método (VB.NET), consegue acessar qualquer tabela ou consulta
na BD.No entanto tem uma consulta em particular que não retorna nenhum dado.

Porque é um mistério:

1. Quando copio e colo esta mesma consulta(SQL) no SqlPlus do Oracle, por exemplo a instrução Sql
     é executada normalmente e até bem rápido , retornando dezenas de registros.

2. Eu executo ,usando o "mesmo código" qualquer consulta na base e tudo retorna perfeito

3.) O Try Catch do VB.Net nao retorna nenhuma exceção (Erro), quando executo o código usando esta instrução Sql


Algum colega, já se deparou com esta situação. De conseguir executar a consulta Sql no Banco (Pelo SqlPlus), mas não
a partir da aplicação???


Agradeço qualquer auxílio.





#470123 - 28/12/2016 11:14:14

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Banco,tabela tudo bem.
Onde está a escrita do código?



#470125 - 28/12/2016 11:24:52

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 28/12/2016 11:25:40 por JCM0867

Usa a versão gratuita do Oracle, ele suporta no máximo 10Gb. Não seria alguma limitação a causa do problema?




#470130 - 28/12/2016 13:19:15

MARCOSLING
SAO PAULO
Cadast. em:Agosto/2008


As configurações da conexão são as mesmas?



#470139 - 28/12/2016 16:44:59

MARCOS

Cadast. em:Dezembro/2003


Colegas,

1. As configurações são exatamente as mesmas ( Uso a mesma String de conexão e o mesmo método para fazer outras consultas,sem problema)
2. Não é a versão Free , é a versão profissional do Oracle (10G)
3. O código segue abaixo. Se alguém puder me dizer se já tiveram problema parecido,fico grato.


Public Function Pesquisa() As DataTable

  'Declara variáveis
   Dim Ada As New OleDbDataAdapter
   Dim Dt As DataTable
   Dim InstrucaoSql As String
   Dim StringDeConexao As String
   Dim Con As New OleDbConnection

   Try

     'Define String de conexão
      StringDeConexao = "Provider=OraOLEDB.Oracle;Data Source=MinhaDataBase;User ID=MeuId;Password=MinhaSenha"

         'Cria objeto conexão (Oracle)
      Con = New OleDbConnection(StringDeConexao)

         'Abre conexão
      Con.Open()

      InstrucaoSql = " select b.codfunc,b.nomefunc,c.codigolinha,d.prefixoveic,a.dtdigit,iddigit,a.codocorr,a.normaldm,a.extradm" _
                         " ,a.entradigit,a.saidadigit,descocorr,descmapaocorr from frq_digitacaomovimento a inner join" _
                         " flp_funcionarios b on (a.codintfunc=b.codintfunc) left outer join  bgm_cadlinhas c on (a.codintlinha=c.codintlinha)" _
                         " left outer join frt_cadveiculos d on (a.codigoveic=d.codigoveic) inner join frq_ocorrencia e on (a.codocorr=e.codocorr)" _  
                         " where dtdigit between '28 nov 2016' and '06 dec 2016' and codfunc = '010917' order by 1


        'Criar DataAdapter
         Ada = New OleDbDataAdapter(InstrucaoSql, Con)
        
        'Criar objeto
         Dt = New DataTable

        'Trasfere dados para DataTable
         Ada.Fill(Dt)
        
        'Returna valor
         Return Dt

        Catch ex As Exception

           'Retorna valor
            Return Nothing


        Finally

           'Abre conexão
            Con.Close()


        End Try


End Function




#470141 - 28/12/2016 17:11:26

MARCOSLING
SAO PAULO
Cadast. em:Agosto/2008


Estou vendo que vc está usando data na cláusula where... pode ser exista diferença no formato da data... faca um teste, tira as datas da cláusula where e veja se funciona



#470145 - 28/12/2016 19:07:10

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


InstrucaoSql = " select b.codfunc,b.nomefunc,c.codigolinha,d.prefixoveic,a.dtdigit,iddigit,a.codocorr,a.normaldm,a.extradm" _
                         " ,a.entradigit,a.saidadigit,descocorr,descmapaocorr from frq_digitacaomovimento a inner join" _
                         " flp_funcionarios b on (a.codintfunc=b.codintfunc) left outer join  bgm_cadlinhas c on (a.codintlinha=c.codintlinha)" _
                         " left outer join frt_cadveiculos d on (a.codigoveic=d.codigoveic) inner join frq_ocorrencia e on (a.codocorr=e.codocorr)" _  
                         " where dtdigit between '28 nov 2016' and '06 dec 2016' and codfunc = '010917' order by 1

Letra representando a tabela.
Verifica



Resposta escolhida #470153 - 28/12/2016 23:53:54

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
1 - Você está usando OleDB quando já existe um data provider Oracle específico para .NET, use-o
2 - Um dos métodos mais primordiais para resolver problemas como o que você está apresentando, é tirar os parâmetros da consulta. Comece por aí.
3 - O SQLPlus é só um client, da mesma maneira que sua aplicação então você pode sim ter resultados diferentes da sua aplicação e do SQLPlus. Além disso, existem clients muito, mas MUITO melhores mesmo e gratuitos, como o Oracle SQL Developer
4 - Para ler dados, use o DataReader, mais especificamente, OracleDataReader.
5 - Os objetos de conexão, comando e leitor(respectivamente OracleConnection, OracleCommand e OracleDataReader), todos implementam IDisposable, portanto, devem ser usados em blocos Using

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#470162 - 29/12/2016 08:42:22

PROFESSOR
SANTOS
Cadast. em:Outubro/2011


KERPLUNK, já matou a barata no nº 1. Não precisava continuar pisando nela.

Difícil de acreditar, mas quem está começando à dar os primeiros passos agora, de algum modo está sendo orientado ao uso de tecnologias já consideradas pré-cambrianas. Se quer começar (ou recomeçar), sempre procurem pelo que há de mais novo, ou ao menos, pelo que é mais requisitado pelo mercado.

É realmente inacreditável a quantidade de pessoas que insistem, persistem e se obstinam em usar a OleDb, mesmo sabendo que estão pisando em ovos de codorna com botina militar. Estou desconfiando que há pessoas ou empresas vendendo a ideia de que basta fazer um curso VB6, que tem quase duas décadas de idade, para entrar na "área de informática"..

Voltei, mas só estou de passagem.

#470165 - 29/12/2016 10:06:17

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Vou descordar de certa forma.
Isso vai depender de qual Banco está usando e qual a finalidade da aplicação.
Não tem nada que impeça de usar a Oledb desde que forneça suporte.
Então, não é tão ruim.



#470167 - 29/12/2016 13:43:22

MARCOSLING
SAO PAULO
Cadast. em:Agosto/2008


Citação:
:
Vou descordar de certa forma.
Isso vai depender de qual Banco está usando e qual a finalidade da aplicação.
Não tem nada que impeça de usar a Oledb desde que forneça suporte.
Então, não é tão ruim.


Isso é verdade, porém, se existe um provider mais apropriado, porque não usar, não é mesmo?



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por MARCOS em 16/01/2017 10:41:38