Foros del Web » Programación para mayores de 30 ;) » .NET »

Que foro mas soso!!!

Estas en el tema de Que foro mas soso!!! en el foro de .NET en Foros del Web. Es que a nadie le da por el .net o que???? somos muchos los ignorantes y muy pocos los maestros..... :-p Pos bueno, a los ...
  #1 (permalink)  
Antiguo 03/01/2003, 03:08
moncherote
Invitado
 
Mensajes: n/a
Puntos:
Que foro mas soso!!!

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

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!!!!!!!!

  #2 (permalink)  
Antiguo 08/01/2003, 14:46
Avatar de misitioweb  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, N.L.
Mensajes: 99
Antigüedad: 22 años, 4 meses
Puntos: 1
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....
  #3 (permalink)  
Antiguo 08/01/2003, 15:18
 
Fecha de Ingreso: octubre-2000
Ubicación: Juarez, Chih.
Mensajes: 161
Antigüedad: 23 años, 6 meses
Puntos: 0
Saludos.

Aquí http://www.attunity-inc.com/adabas_d.htm podrás obtener los drivers.
__________________
---------------------
Tan libre como gratuito!!!
  #4 (permalink)  
Antiguo 13/01/2003, 03:44
moncherote
Invitado
 
Mensajes: n/a
Puntos:
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.
  #5 (permalink)  
Antiguo 13/01/2003, 04:35
moncherote
Invitado
 
Mensajes: n/a
Puntos:
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???
  #6 (permalink)  
Antiguo 16/01/2003, 22:19
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
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
Systems Developer Specialist
ACS Inc./Xerox
Guatemala
  #7 (permalink)  
Antiguo 20/01/2003, 03:07
moncherote
Invitado
 
Mensajes: n/a
Puntos:
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
  #8 (permalink)  
Antiguo 20/01/2003, 08:50
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
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
Systems Developer Specialist
ACS Inc./Xerox
Guatemala
  #9 (permalink)  
Antiguo 21/01/2003, 03:13
moncherote
Invitado
 
Mensajes: n/a
Puntos:
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)

  #10 (permalink)  
Antiguo 21/01/2003, 08:39
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
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
Systems Developer Specialist
ACS Inc./Xerox
Guatemala
  #11 (permalink)  
Antiguo 22/01/2003, 06:08
moncherote
Invitado
 
Mensajes: n/a
Puntos:
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

- 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.
  #12 (permalink)  
Antiguo 22/01/2003, 08:36
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
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
Systems Developer Specialist
ACS Inc./Xerox
Guatemala
  #13 (permalink)  
Antiguo 23/01/2003, 02:43
moncherote
Invitado
 
Mensajes: n/a
Puntos:
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!!!
  #14 (permalink)  
Antiguo 23/01/2003, 05:53
moncherote
Invitado
 
Mensajes: n/a
Puntos:
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:
  #15 (permalink)  
Antiguo 23/01/2003, 09:40
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
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
Systems Developer Specialist
ACS Inc./Xerox
Guatemala
  #16 (permalink)  
Antiguo 23/01/2003, 09:56
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
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
Systems Developer Specialist
ACS Inc./Xerox
Guatemala
  #17 (permalink)  
Antiguo 23/01/2003, 11:43
moncherote
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo fffiiiuuuuuu!!!!!!!!

¡¡¡mima que pasote!!!

Necesitaré dos dias para asimilar tanta información.

tenkiu !!!
  #18 (permalink)  
Antiguo 23/01/2003, 11:50
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
Denankiu!
__________________
José Luis Chávez del Cid
Systems Developer Specialist
ACS Inc./Xerox
Guatemala
  #19 (permalink)  
Antiguo 04/02/2003, 06:45
moncherote
Invitado
 
Mensajes: n/a
Puntos:
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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:02.