Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Conexion oracle desde vb usando ADO
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Conexion oracle desde vb usando ADO

Publicar nuevo tema Responder al tema
Foros de discusión » VB.Net, C# .Net, Visual Studio .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
HuachoSoft
Usuario


Registrado: May 29, 2009
Mensajes: 4

Asunto: Conexion oracle desde vb usando ADO Responder citando

Holas

He visto el siguiente articulo de esta web

"Acceso a Oracle mediante Microsoft Visual Basic, RDO y ODBC"
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=223

el cual me parece bueno.

Yo deseo hacer lo mismo pero usando ADO y ODBC en vez de RDO

Espero me puedan ayudar. de antemano muchas gracias
MensajePublicado:
Jue Jun 11, 2009 3:38 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Conexion oracle desde vb usando ADO Responder citando



Anuncios



HuachoSoft escribió:
Holas

He visto el siguiente articulo de esta web

"Acceso a Oracle mediante Microsoft Visual Basic, RDO y ODBC"
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=223

el cual me parece bueno.

Yo deseo hacer lo mismo pero usando ADO y ODBC en vez de RDO

Espero me puedan ayudar. de antemano muchas gracias


Aquí te mostramos un ejemplo de conexión de Visual Basic 6 con Oracle mediante ADO sin necesidad de utilizar ODBC:

Código:

Private Sub btConexionOracleADO_Click()
  Dim cadenaConexion As String
  Dim sql As String
  Dim conexionADO As New ADODB.Connection
  Dim recordsetDatos As New ADODB.Recordset
 
  On Error GoTo cError

  'Indicamos el nombre de la base de datos Oracle (SID)
  cadenaConexion = "Data Source=BDAJPDSOFT;"
  'Indicamos el proveedor de datos OLEDB
  conexionADO.Provider = "OraOLEDB.Oracle"
  'Realizamos la conexión con los datos anteriores,
  'el usuario de Oracle y la contraseña
  conexionADO.Open cadenaConexion, "alonso", "ajpdsoft"
 
  'Indicamos la consulta SQL que se ejecutará
  sql = "SELECT * FROM facturas"
  'Ejecutamos la consulta SQL y guardamos el resultado en el recordset
  recordsetDatos.Open sql, conexionADO, 3, 3

  'Nos movemos al primer registro del recordset
  recordsetDatos.MoveFirst
 
  'Mostramos el número de registros de la consulta SQL
  MsgBox CStr(recordsetDatos.RecordCount)

  'Cerramos la conexión de la aplicación VB con Oracle
  recordsetDatos.Close
  Set recordsetDatos = Nothing
  conexionADO.Close
  Set conexionADO = Nothing
 
cSalir:
  Exit Sub
 
cError:
  MsgBox Err.Description
  GoTo cSalir
End Sub


Donde:

* BDAJPDSOFT: será el nombre de servicio de red de Oracle. Este nombre se establece al crear la conexión mediante la utilidad del cliente de Oracle "Net Configuration Assistant".
* "alonso": nombre del usuario de Oracle con permisos suficientes para realizar las tareas que desees.
* "ajpdsoft": contraseña del usuario de Oracle anterior.
* "SELECT * FROM facturas": consulta SQL a ejecutar, en tu caso será la que quieras.
* "3, 3": estos parámetros en "recordsetDatos.Open" indican el tipo de interacción que realizarás con los datos, si es una consulta de sólo lectura (como la que te indicamos en el ejemplo) será "3, 3". Si quieres insertar un registro (modificar el recordset): "2, 3".

Nota importante: para que el código anterior funcione debes agregar una referencia a "Microsoft ActiveX Data Object" en el menú "Proyecto" - "Referencias", marca "Microsoft ActiveX Data Object 2.8 Library" (o la versión de que dispongas).


Ultima edición por alonsojpd el Jue Jun 11, 2009 6:50 pm, editado 1 vez
MensajePublicado:
Jue Jun 11, 2009 6:27 pm
Top of PageVer perfil de usuario
HuachoSoft
Usuario


Registrado: May 29, 2009
Mensajes: 4

Asunto: Responder citando

gracias alonsojpd

una duda.

Yo antes he trabajado con oracle 8i y 9i. y para hacer los selects a las tablas lo hacia como indicas en tu post.

Pero he visto que en la version 10g usan select * from usuario.tabla en los selects, o select * from package.tabla. Si en la base de datos hacen esto, en el visual basic sólo debo hacer select * from tabla???
MensajePublicado:
Jue Jun 11, 2009 6:38 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Conexion oracle desde vb usando ADO Responder citando



Anuncios



Te indicamos los posibles errores que te puedes encontrar:

* "ORA-12154: TNS:could not resolve service name": este error es debido a que el nombre del servicio de red que has indicado en la línea:

Código:

cadenaConexion = "Data Source=BDAJPDSOFT;"


No existe en el equipo, aquí debes indicar el nombre de red de Oracle en el equipo cliente.

Este artículo indica cómo crear ese nombre de red y cómo instalar Oracle Client:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=135

* "ORA-01017: invalid username/password; logon denied": el nombre de usuario o la contraseña que has introducido en la línea:

Código:

conexionADO.Open cadenaConexion, "alonso", "ajpdsoft"


No existen en Oracle. Recuerda que este usuario y contraseña debe existir en Oracle Database.

* "ORA-00942: table or view does not exist": este error es debido a que la tabla o vista que has introducido en la consulta SQL no existe en Oracle o bien el usuario que has utilizado no tiene permisos para verla:

Código:

  sql = "SELECT * FROM facturas"
  recordsetDatos.Open sql, conexionADO, 3, 3


* "Provider cannot be found. It may not be properly installed.": este error suele ser debido a que no tienes instalado Oracle Client en el equipo client que ha de conectarse a Oracle Database (servidor de Oracle). También puede ser debido a que faltan los ficheros de ADO de Microsoft en el equipo.
MensajePublicado:
Jue Jun 11, 2009 6:41 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Responder citando

HuachoSoft escribió:
gracias alonsojpd

una duda.

Yo antes he trabajado con oracle 8i y 9i. y para hacer los selects a las tablas lo hacia como indicas en tu post.

Pero he visto que en la version 10g usan select * from usuario.tabla en los selects, o select * from package.tabla. Si en la base de datos hacen esto, en el visual basic sólo debo hacer select * from tabla???


En realidad sólo es necesario utilizar la nomenclatura "usuario.tabla" cuando el usuario que has utilizado para la conexión a Oracle no es el propietario de las tablas. Si el usuario que has utilizado tiene en su esquema las tablas que vas a utilizar en el select no te será necesario utilizar "usuario.tabla", en caso contrario sí.
MensajePublicado:
Jue Jun 11, 2009 6:44 pm
Top of PageVer perfil de usuario
HuachoSoft
Usuario


Registrado: May 29, 2009
Mensajes: 4

Asunto: Responder citando

ok, muchisimas gracias.

Una ultima consulta.

A que se puede deber que cuando hago un select me devuelva como recordcount der recordset -1??? pero como valor eof false???

Ademas, cuando ejecuto el mismo select en el microsoft query (interface de excel para conectarse a base de datos externas) si muestra valores.
MensajePublicado:
Jue Jun 11, 2009 7:20 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Responder citando

HuachoSoft escribió:
ok, muchisimas gracias.

Una ultima consulta.

A que se puede deber que cuando hago un select me devuelva como recordcount der recordset -1??? pero como valor eof false???

Ademas, cuando ejecuto el mismo select en el microsoft query (interface de excel para conectarse a base de datos externas) si muestra valores.


¿has utilizado el "recordsetDatos.MoveFirst"? aunque parezca innecesario sí lo es para llenar el recordset.
MensajePublicado:
Jue Jun 11, 2009 7:32 pm
Top of PageVer perfil de usuario
HuachoSoft
Usuario


Registrado: May 29, 2009
Mensajes: 4

Asunto: Responder citando

no era eso.

revizando mas, le hice un cambio a

Cita:
rs.Open sql, cnx, adOpenStatic, adLockReadOnly


ya que solo lo tenia hasta

Cita:
rs.Open sql, cnx


Ahora si devuelve información. Parece que no devolvia nada por privilegios con el usuario. Es la primera vez que me pasa esto, ya que usualmente solo lo uso hasta la conexion. Los demas valores no los pongo.
MensajePublicado:
Jue Jun 11, 2009 7:44 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » VB.Net, C# .Net, Visual Studio .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+