Retroceder   Foros del Web > Programación para sitios web > .NET

Respuesta
 
Herramientas Desplegado
Antiguo 03-ene-2003, 02:08   #1 (permalink)
moncherote está en el buen camino
 
Avatar de moncherote
 
Fecha de Ingreso: noviembre-2002
Ubicación: Galiza , EspaÑa
Mensajes: 581
Que foro mas soso!!!

Es que a nadie le da por el .net o que????
somos muchos los ignorantes y muy pocos los maestros.....

Pos bueno, a los que vamos :

Me he creado un servicio web para acceder a traves de el con otra aplicacion a una base de datos. Esto, esta claro lo he hecho con un codigo que me encontre en la pagina de microsoft.

Lo que pasa es que la base de datos no es SQL Server ni access y no se como hacer que se me conecte a una bd de 'Adabas D'.
Lo que me falla es el proveedor, creo. Alguien sabe algo????
Me urge, plis!!!!!!!!

__________________
Gallaecia fulget
:-Þ
moncherote está desconectado   Responder Citando
Antiguo 08-ene-2003, 13:46   #2 (permalink)
misitioweb está en el buen camino
 
Avatar de misitioweb
 
Fecha de Ingreso: noviembre-2002
Ubicación: Guadalupe, N.L.
Mensajes: 99
Busca en la pagina web de la compañia que hace esa base de datos por los controladores odbc..... y asi podras usarla sin problemas...

Saludos....
misitioweb está desconectado   Responder Citando
Antiguo 08-ene-2003, 14:18   #3 (permalink)
vgaray está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Ubicación: Juarez, Chih.
Mensajes: 161
Saludos.

Aquí http://www.attunity-inc.com/adabas_d.htm podrás obtener los drivers.
__________________
---------------------
Tan libre como gratuito!!!
vgaray está desconectado   Responder Citando
Antiguo 13-ene-2003, 02:44   #4 (permalink)
moncherote está en el buen camino
 
Avatar de moncherote
 
Fecha de Ingreso: noviembre-2002
Ubicación: Galiza , EspaÑa
Mensajes: 581
gracias!

Gracias tios, pero creo q me explique mal :

El driver odbc lo tengo, y tambien odbc.net, y lo que me fallaba era la conexion . Pos bien, ya conecté y solo me queda poder usar los datos de la consulta, ya que al intentar ponerlo en en datagrid o asi me falla, pero ya es otro tema que voy a mirar y ya pongo por aqui el código.
__________________
Gallaecia fulget
:-Þ
moncherote está desconectado   Responder Citando
Antiguo 13-ene-2003, 03:35   #5 (permalink)
moncherote está en el buen camino
 
Avatar de moncherote
 
Fecha de Ingreso: noviembre-2002
Ubicación: Galiza , EspaÑa
Mensajes: 581
Alegría aqui esta el codigo !!

Ahi os va:

error:

Excepción no controlada del tipo 'Microsoft.Data.Odbc.OdbcException'
en microsoft.data.odbc.dll

Información adicional: Error del sistema.

codigo:

Imports Microsoft.Data.Odbc ...
...
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

Dim strConnectionString As String
strConnectionString = "dsn=BD;uid=pppp;pwd=pp;"
Dim pConn As New OdbcConnection(strConnectionString)
Dim pInsertQuery As String = "SELECT * FROM pais"
Dim adapter As New OdbcDataAdapter(pInsertQuery, pConn)
Dim paises As DataSet = New DataSet()
adapter.Fill(paises, "pais") ' ***aqui me falla***
DataGrid1.SetDataBinding(paises, "pais")
DataGrid1.Show()

End Sub

Me da ese error en el adapter. Parece que conecta bien, y hace la sql, pero me peta al acceder a los datos, no???
__________________
Gallaecia fulget
:-Þ
moncherote está desconectado   Responder Citando
Antiguo 16-ene-2003, 21:19   #6 (permalink)
jlchavez está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Ubicación: Guatemala
Mensajes: 149
Enviar un mensaje por ICQ a jlchavez Enviar un mensaje por MSN a jlchavez Enviar un mensaje por Yahoo  a jlchavez
Deberas revisar la instalación de los drivers ODBC de esa base de datos que estas usando, ya que esta disparo un error y el ODBC.Net no pudo controlar el error. El mensaje de el error es demasiado generico como para saber con exactitud donde esta la falla.

En caso remoto se podria determinar con mayor precisión si es que se ejecuto y que no pudo obtener la data, viendo el "stack" completo de las llamadas internas, por que solo has colocado un pedazo del codigo y el titulo del error. El stack es la mejor herramienta para saber por donde esta la falla.
__________________
José Luis Chávez del Cid
Consultor, Ministerio de Salud Pública/BID
Modernización del Seguro Social (IGSS), Guatemala
servicios.igssgt.org
jlchavez está desconectado   Responder Citando
Antiguo 20-ene-2003, 02:07   #7 (permalink)
moncherote está en el buen camino
 
Avatar de moncherote
 
Fecha de Ingreso: noviembre-2002
Ubicación: Galiza , EspaÑa
Mensajes: 581
Es que no lo entiendo!!!!!!

Pero si con el VB6 conectaba de p... madre con esta base de datos, y con este ejemplo el access va como un tiro!!!!

Que le pasa al puñetero odbc.

Ahh, y de que va eso del stack, que soy novato y no menterao todavia.

P.D. : el codigo esta todo, no falta nada importante
__________________
Gallaecia fulget
:-Þ
moncherote está desconectado   Responder Citando
Antiguo 20-ene-2003, 07:50   #8 (permalink)
jlchavez está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Ubicación: Guatemala
Mensajes: 149
Enviar un mensaje por ICQ a jlchavez Enviar un mensaje por MSN a jlchavez Enviar un mensaje por Yahoo  a jlchavez
Pues como este es un código administrado, algo a de estar mal en el driver de odbc, que le resulta error al odbc de .net

El stack es lo mas viejo que existe, es la pila de punteros de los procedimientos que van llamando unos a otros.

Supongamos un procedimiento main, llama a showstats, y showstats a setvideo, la pila (stack) se vería así:

setvideo(...)
showstats(...)
main(...)

Por default las opciones de debug muestran la pila para saber la ruta y de que punto podria derivarse el error.

Intenta cambiando "odbc" por "OleDb", es otra libreria y te debe de funcionar igual.
__________________
José Luis Chávez del Cid
Consultor, Ministerio de Salud Pública/BID
Modernización del Seguro Social (IGSS), Guatemala
servicios.igssgt.org
jlchavez está desconectado   Responder Citando
Antiguo 21-ene-2003, 02:13   #9 (permalink)
moncherote está en el buen camino
 
Avatar de moncherote
 
Fecha de Ingreso: noviembre-2002
Ubicación: Galiza , EspaÑa
Mensajes: 581
Alegría Una consulta

Como veo que le controlas del .net, me gustaria consultarte algo :

Es verdad que el acceso a datos mediante odbc viene capado, osea, que he oido ( de cierto energumeno que espero no tenga razon) que el acceso odbc solo esta probado para motores sql server, oracle y jet .

Que yo haya leido , dentro de lo que es ADO, sqlserver y oracle tienen su propio acceso a datos , y luego se puede acceder a las demas con oledb u odbc.

Yo intento acceder a un BD adabasD mediante odbc, y me casca, y va el tio y como falla me dice que el acceso mediante odbc ya no se va a usar mas, que tiene que ser oledb.

Y porque no puedo rechistar, que es el de arriba mio (usease boss), a si que a ver si me ayudas, que yo aunque le enseño el manual de .net donde lo pone el me dice que no (y eso que no sabe programar en visual basic)

__________________
Gallaecia fulget
:-Þ
moncherote está desconectado   Responder Citando
Antiguo 21-ene-2003, 07:39   #10 (permalink)
jlchavez está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Ubicación: Guatemala
Mensajes: 149
Enviar un mensaje por ICQ a jlchavez Enviar un mensaje por MSN a jlchavez Enviar un mensaje por Yahoo  a jlchavez
Ya investigue un poco. Según lo que leí la forma original de manejar y conectarse bajo Windows, era usando ODBC. Esta es una interface estandar entre la aplicación y el driver de acceso a la base de datos X, compatibles con los estandares ANSI SQL. Buscando expandir el tipo de archivos o datos que se puedan accesar, como por ejemplo archivos de texto, se creo OLE DB.

.Net framework presenta 2 librerias:

System.Data.OleDb y
System.Data.SqlClient

adicionalmente se puede descargar

System.Data.OracleClient

SqlClient y OracleClient son de acceso especifico, incluyendo las ventajas de cada controlador (driver). OleDb, es utilizando esa expansión, y es una interfase de acceso mas estandar. OleDb te permite el acceso usando un "Provider" X, utilizando una cadena de conección donde especifique el nombre del driver. De ahí ciertas ventajas que provee el OleDb que se prefiere este. El ODBC no es que este bloqueado, es mas que OleDb, es otra metodología de acceso y si un controlador no viene preparado para ambos, no funcionara.

ADO (Access Data Objects), es lo mismo que OleDb, muchos drivers ODBC se puede utilizar con OleDb, pero esto depende de la construcción de los mismos.

Este es un buen artículo que en la introducción te explica esto: http://msdn.microsoft.com/library/de...asp?frame=true

Ademas te introduce a como crear proveedores especificos, así como el "SqlClient". Mas creo que este no seria tu objetivo.

Para usar ODBC deberías utilizar, este otro: "ODBC .Net Data Provider", lo podes descargar de: http://msdn.microsoft.com/downloads/...xml&frame=true

Parece que tu jefe, le ha atinado per mas por suerte que por base de conocimiento, pero quien sabe talvez encontro algo en internet que lo explica.
__________________
José Luis Chávez del Cid
Consultor, Ministerio de Salud Pública/BID
Modernización del Seguro Social (IGSS), Guatemala
servicios.igssgt.org
jlchavez está desconectado   Responder Citando
Antiguo 22-ene-2003, 05:08   #11 (permalink)
moncherote está en el buen camino
 
Avatar de moncherote
 
Fecha de Ingreso: noviembre-2002
Ubicación: Galiza , EspaÑa
Mensajes: 581
Molesto A ver si me centro

El caso es :

- Ya tenia bajado el odbc .net

- Siempre conecte mediante ODBC a bases de datos AdabasD, siempre me parecio lo mas sencillo y lo que me dio menos problemas(por no decir ninguno).

-Ahora llega el .NET y puedo conectarme, pero no se como acceder a los datos de la sql.

- Viene el boss y me dice : "eres mu torpe (puede ser...) , la conexion ODBC no es ADO, tienes que hacer ADO. ADO es OLEDB. El ODBC no sirve para las BD que no sean de microsoft u oracle." :cantar:

- El articulo en ingles debe estar bien, gracias por recomendarmelo, pero lo va a leer San Pedro (perdona , pero me lia mas todavia). :roto:

Yo lo que quiero es saber lo siguiente:

- Que diferencias en cuanto a acceso a datos hay entre VB6 y .NET :decabeza:

- Porque ODBC ya no es una via tan fiable, si es universal. Es que los de microsoft estan tontos o que!!!!!

- Y ultimo, queria decir algo mas, pero ya no me acuerdo, vale!!!

PD : jlchavez, muchas gracias por todo.
__________________
Gallaecia fulget
:-Þ
moncherote está desconectado   Responder Citando
Antiguo 22-ene-2003, 07:36   #12 (permalink)
jlchavez está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Ubicación: Guatemala
Mensajes: 149
Enviar un mensaje por ICQ a jlchavez Enviar un mensaje por MSN a jlchavez Enviar un mensaje por Yahoo  a jlchavez
Ahhhh ahora ya entendi que te hace falta jeje

La forma de acceso a datos ya no es en un flujo directo desde la base de datos, hasta el código, si usas el DataAdapter. Le denominan "disconected recordset", por que se ejecuta el DataAdapter que lee todos los resultados de la base de datos y te quedan en una sola colección en memoria, un DataSet.

Pongamos un ejemplo: (yo programo en C#, solo sera de reescribirlo en VB)

Cita:
OleDbConnection Con1 = new OleDbConnection("...");
OleDbDataAdapter DataA1 = new OleDbDataReader("Select * from emp",Con1);
DataSet ds1 = new DataSet();
DataA1.fill(ds1,"Datos");
La primera linea utilizara en lugar de "..." el string de conección.

La segunda crea un Adaptador que se encarga de ejecutar los queries a la BD.

La tercera se crea un DataSet que almacenaro los datos.

La cuarta es el Adaptador que se le indica que llene el DataSet con una tabla llamada "Datos", esos datos provienen del query string de la segunda línea.

Para accesar los datos:

Cita:
DataTable dt1 = ds1.Tables["Datos"]
DataTable tiene dos objetos "Rows", y "Columns". Rows es un DataRowCollection, con todos los registros que se obtuvieron de la base de datos. Columns es un DataColumnCollection que contiene el listado de todas las columnas que devolvio el query.

Cita:
dt1.Rows.Count
Esto te devuelve el número de registros obtenidos.

Cita:
dt1.Columns.Count
El número de columnas.

Los resultados los podes accesar de la siguiente forma:

Cita:
DataRow drtemp = dt1.Rows[0]
object col1 = drtemp[0]
DataRow ya es la collección de datos de un registro devuelto. El DataRowCollection posee un indice ([n]) para poder accesar en orden los registros, de ahí que en la primera línea de este último bloque de código se obtiene un registro, el primero (0, indices que inician en 0). En la segunda línea se obtiene la primer columna de los resultados (drtemp[0]).

Para volver estos registros en el tipo correcto, podemos usar lo siguiente:

Cita:
string nombre_emp = drtemp[0].ToString();
float sueldo = Convert.ToFloat(drtemp[1].ToString());
float sueldo2 = (float)drtemp[1];
Supongamos que vamos a mostrar todos los nombres de empleados:

Cita:
OleDbConnection Con1 = new OleDbConnection("...");
OleDbDataAdapter DataA1 = new OleDbDataReader("Select name from emp",Con1);
DataSet ds1 = new DataSet();
DataA1.fill(ds1,"Datos");
int c = 0;
foreach (DataRow drtemp in ds1.Tables["Datos"].Rows) {
Response.Write(String.Format("[{0}] {1}",c++,drtemp["name"]);
}
o
Cita:
OleDbConnection Con1 = new OleDbConnection("...");
OleDbDataAdapter DataA1 = new OleDbDataReader("Select name from emp",Con1);
DataSet ds1 = new DataSet();
DataA1.fill(ds1,"Datos");
int c = 0;
foreach (DataRow drtemp in ds1.Tables["Datos"].Rows) {
Response.Write(String.Format("[{0}] {1}",c++,drtemp[0]);
}
El resultado en la página sera:

Cita:
[0] Scott
[1] Tomas
[2] Cristine
Esta es una de las formas rápidas de accesar datos, sin tanta programación y preocupación, pero también existe el DataReader, para procesar los datos sin requerir del DataAdapter como una capa intermedia.
__________________
José Luis Chávez del Cid
Consultor, Ministerio de Salud Pública/BID
Modernización del Seguro Social (IGSS), Guatemala
servicios.igssgt.org
jlchavez está desconectado   Responder Citando
Antiguo 23-ene-2003, 01:43   #13 (permalink)
moncherote está en el buen camino
 
Avatar de moncherote
 
Fecha de Ingreso: noviembre-2002
Ubicación: Galiza , EspaÑa
Mensajes: 581
De acuerdo ok !!!

Solo tengo un problema con el oledb :

- Como consigo la cadena de conexion para AdabasD?????
Necesito el provider , no?? Tengo ejemplos de varios en
http://www.connectionstrings.com/ ,

pero ya no se que ponerle a AdabasD.
(Bendito ODBC)

Un millon!!!
__________________
Gallaecia fulget
:-Þ
moncherote está desconectado   Responder Citando
Antiguo 23-ene-2003, 04:53   #14 (permalink)
moncherote está en el buen camino
 
Avatar de moncherote
 
Fecha de Ingreso: noviembre-2002
Ubicación: Galiza , EspaÑa
Mensajes: 581
Alegría Estoy mas tranquilo!!!

Encontre esto por internet y ya no me siento tan burro como hace poco :

Cita:
Objetos ADO

OBJETO CONNECTION:- OBJETO QUE SE UTILIZA PARA ESTABLECER UNA CONECCION O ENLACE A LA BASE DE DATOS.
Este objeto primero se tendra que crear en el programa y luego se tendra que cargar con dos parametros (ver ejemplo mas abajo), el primer parametro es el provedor o la fuente que proporcionara los datos, los provedores o fuentes de datos que existen son:

SQLSERVER NET DATA PROVIDER.- QUE SE ESPECIALIZA EN COMUNICARSE Y PROCESAR BASES DE DATOS CONSTRUIDAS CON MICROSOF SQL SERVER V7.0

OLEDB.NET DATA PROVIDER.- QUE SE ESPECIALIZA EN COMUNICARSE Y PROCESAR BASES DE DATOS QUE A LA FECHA DEL PRESENTE LIBRO UTILIZEN ALGUNOS DE LOS SIGUIENTES DRIVERS , SQLOLEDB ( VERSIONES ANTERIORES DE SQL SERVER DE MICROSOFT), MSDAORA (ORACLE), MICROSOFT.JET ( ACCESS Y ALGUNOS OTROS DBMS DE MICROSOFT)

ODBC.NET .- BASES DE DATOS QUE USAN ODBC COMO MEDIO DE COMUNICACION CON OTRAS BASES DE DATOS Y APLICACIONES, COMO NOTA A CONSIDERAR ODBC.NET NO ESTA INCLUIDA POR DEFAULT EN MICROSOFT.NET, SE TIENE QUE BAJAR DE MICROSOFT.

etc ........
Pos eso, que lo que viene capado es el oledb (solo microsoft y oracle) y no el odbc (pa todo dios) :cantar:
__________________
Gallaecia fulget
:-Þ
moncherote está desconectado   Responder Citando
Antiguo 23-ene-2003, 08:40   #15 (permalink)
jlchavez está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Ubicación: Guatemala
Mensajes: 149
Enviar un mensaje por ICQ a jlchavez Enviar un mensaje por MSN a jlchavez Enviar un mensaje por Yahoo  a jlchavez
Ya encontre donde esta el problema:

1 - Quien crea el driver OleDb debe proveer cual es el nombre del provider.

2 - Solo funcionan los providers que provean ciertas interfaces, y solo hay para

SQL - SQLOLEDB
Oracle - MSDAORA
Access - Microsoft.Jet.OLEDB.4.0

Si encuentro algo mas te aviso, estoy rastreando para ver como sabe el sistema cuales son los controladores OleDb que estan instalados, así tal vez encuentre la ubicación estandar y nombres de providers.
__________________
José Luis Chávez del Cid
Consultor, Ministerio de Salud Pública/BID
Modernización del Seguro Social (IGSS), Guatemala
servicios.igssgt.org
jlchavez está desconectado   Responder Citando
Antiguo 23-ene-2003, 08:56   #16 (permalink)
jlchavez está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Ubicación: Guatemala
Mensajes: 149
Enviar un mensaje por ICQ a jlchavez Enviar un mensaje por MSN a jlchavez Enviar un mensaje por Yahoo  a jlchavez
Los drivers ODBC solo se pueden utilizar con el ODBC .NET Data Provider.

Cita:
The "Provider = value " clause is required. However, you cannot use "Provider = MSDASQL" because the OLE DB .NET Data Provider does not support the OLE DB Provider for ODBC (MSDASQL). For access to ODBC data sources, an ODBC .NET Data Provider is available as a separate download at http://msdn.microsoft.com/downloads.
Como podemos ver aquí los proveedores OleDb para ODBC no son compatibles, para poder conectarte tendrian que ser controladores especificos para OleDB y que cumplan con los requerimientos básicos de interfaces del controlador, que son:

Cita:
OLE DB Services
-----
IDataInitialize
-----
DataSource IDBInitialize
IDBCreateSession
IDBProperties
IPersist
IDBInfo*

Session
-----
ISessionProperties
IOpenRowset
IDBSchemaRowset*
ITransactionLocal*
IDBCreateCommand*
Command ICommandText
ICommandProperties
ICommandWithParameters*
IAccessor (only required if ICommandWithParameters is supported)
ICommandPrepare*

MultipleResults
-----
IMultipleResults

RowSet
-----
IRowset
IAccessor
IColumnsInfo
IColumnsRowset*
IRowsetInfo (only required if DBTYPE_HCHAPTER is supported)

Row
-----
IRow*

Error
-----
IErrorInfo
IErrorRecords
ISQLErrorInfo*

* indicates an optional interface
__________________
José Luis Chávez del Cid
Consultor, Ministerio de Salud Pública/BID
Modernización del Seguro Social (IGSS), Guatemala
servicios.igssgt.org
jlchavez está desconectado   Responder Citando
Antiguo 23-ene-2003, 10:43   #17 (permalink)
moncherote está en el buen camino
 
Avatar de moncherote
 
Fecha de Ingreso: noviembre-2002
Ubicación: Galiza , EspaÑa
Mensajes: 581
De acuerdo fffiiiuuuuuu!!!!!!!!

¡¡¡mima que pasote!!!

Necesitaré dos dias para asimilar tanta información.

tenkiu !!!
__________________
Gallaecia fulget
:-Þ
moncherote está desconectado   Responder Citando
Antiguo 23-ene-2003, 10:50   #18 (permalink)
jlchavez está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Ubicación: Guatemala
Mensajes: 149
Enviar un mensaje por ICQ a jlchavez Enviar un mensaje por MSN a jlchavez Enviar un mensaje por Yahoo  a jlchavez
Denankiu!
__________________
José Luis Chávez del Cid
Consultor, Ministerio de Salud Pública/BID
Modernización del Seguro Social (IGSS), Guatemala
servicios.igssgt.org
jlchavez está desconectado   Responder Citando
Antiguo 04-feb-2003, 05:45   #19 (permalink)
moncherote está en el buen camino
 
Avatar de moncherote
 
Fecha de Ingreso: noviembre-2002
Ubicación: Galiza , EspaÑa
Mensajes: 581
Alegría po ya ta!!!

Muchas gracias men!!!! Pero ... Ya me salió!!!

Le dije al pringao este que era que la version del driver odbc para adabas no era compatible, que habia que actualizarlo.

Pues bien, aunque me lo negaba, accedio a probar y.....

Tachaaaannnn!!!! Como un tiro!!! Se le quedo cara de jili al ver que tenia yo razón. :roto:

Por cierto, la version que no rula es la v10, de la v11 para arriba va bien, por si alguien lo necesita.
__________________
Gallaecia fulget
:-Þ
moncherote está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 1 votos, 3,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 20:44.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75