Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-04-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
vamos a ver te lo voy a poner por pasos :

1.- Accede al Panel de control de control de windows, luego a los origenes de datos(ODBC) de windows. Una vez alli posicionate en la pestaña DSN de sistema y pincha en el botón Agregar..., se te abrirá un cuadro de dialogo en el cual te pedirá un controlador para acceder a la base de datos; en nuestro caso selecciona Microsoft Access Driver (*.mdb), te aparecerá otro dialogo en el que le tienes que decir un nombre para el origen de datos pon el que quieras por ejemplo MiBd ahora toca seleccionar la base de datos .mdb, bien pincha en el boton seleccionar... y en el siguiente cuadro de dialogo, donde pone nombre de la base de datos pon tu ruta UNC por ejemplo \\Servidor\directorio\basededatos.mdb. despues acepta todos los cuadros de dialogo y salte de ahi.

2º.- Muy bien ya nos hemos creado el origen de datos, ahora viene la conexión en delphi. Abrete un formulario para probar lo que te cuento. Inserta en el un componente TADOConnection. Vale ahora vete a la propiedad ConnectionString de ese componente y pincha en sus tres puntitos ... . Bien ahora te saldrá un cuadro de diálogo en el cual tienes que seleccionar la opción Use Connection String y pulsar el botón Build.... vale ahora te saldrá otro cuadro de diálogo en el que tienes que seleccionar el proveedor en nuestro caso Microsoft Ole DB Provider for ODBC Drivers ahora pasamos a la pestaña Conexión, ahi donde dice especifica origen de datos abrimos el combobox y seleccionamos nuestro origen de datos Midb que nos creamos en el paso 1 . en esa misma pestaña tienes un botón para probar que la conexión es correcta, comprobado esto le damos aceptar.
En el mismo componente para que no tengas que introducir clave a la hora de acceder a la Bd pon la propiedad LoginPrompt a false.

3º Inserta en el mismo formulario otro componente del tipo TADOTable, y en su propiedad Connection selecciona el nombre del componente TAdoConnection por defecto ADOConnection1. Muy bien ahora solo queda seleccionar la tabla de la base de datos a la que queremos acceder, eso se determina en la propiedad TableName. Una vez seleccionada pondremos la propiedad Active de los componentes TADOConnection y TADOTable a true.

4º Perfecto ahora solo nos queda visualizar los datos, insertamos un componente TDataSource y en su propiedad DataSet le indicamos el nombre del componente TTable. Ahora inserta un componente del tipo TDBGrid y en su propiedad Datasource le indicas el componente que nos acabamos de crear, en este momento ya deberías de ver los datos de tu tabla en la rejilla. Para un TQuery deberías tocar las mismas propiedades y en vez de indicarle una tabla insertarias una sentencia SQL.

Espero que con mi explicación puedas llegar a sacar algo en claro , creo que he sido bastante conciso. De todas formas esta es una manera de acceder a los datos de una Bd pero hay muchas más.....

Saludos, Tony
Responder Con Cita
  #2  
Antiguo 15-04-2004
HugoH HugoH is offline
Miembro
 
Registrado: abr 2004
Posts: 20
Poder: 0
HugoH Va por buen camino
Muchas gracias

Realmente te agradezco mucho, y me voy a poner a aplicar lo que me has dicho.
Espero no tener problemas...
Nuevamente muchas gracias
Responder Con Cita
  #3  
Antiguo 15-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

El Paso 1, te lo puedes ahorrar.

Entonces en el Paso 2, en lugar de utilizar el Microsoft OleDB Provider for ODBC, utilizaremeos el Microsoft Jet 4.0 OleDB Provider. En la segunda pestaña, le tendrás que indicar el archivo Access al que se accede (mediante la ruta UNC).

Para acceder a Access es más recomendable utilizar el Provider OleDB para Jet 4, que el de ODBC. Puesto que ese provider es su driver nativo, en cambio con el acceso por ODBC utilizamos una capa intermedia de más. Con el consiguiente ralentimiento de la aplicación, y más posiblidades de errores.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 15-04-2004
HugoH HugoH is offline
Miembro
 
Registrado: abr 2004
Posts: 20
Poder: 0
HugoH Va por buen camino
Conexión exitosa y...otro problema.

Te cuento que apliqué los pasos que me has indicado y la conexión se realiza bien. El tema es que al querer insertar un record en la Base de Datos da el siguiente error "Error de sintaxis en la cláusula FROM".
¿Tiene algo que ver con SQL?
Yo estoy tratando de insertar el record de la siguiente manera:

Form2.ADOTable1.Open;
Form2.ADOTable1.Insert;
Form2.ADOTable1.FieldByName('Campo1').AsString := 'xxx';
Form2.ADOTable1.FieldByName('Campo2').AsString := 'yyy';
Form2.ADOTable1.FieldByName('Campo3').AsString := 'zzz';
Form2.ADOTable1.FieldByName('Campo4').AsString := 'qqq';
Form2.ADOTable1.Post;

¿Ésta ésto bien?
¿Cómo se inserta una sentencia SQL en delphi?

Muchas gracias
Responder Con Cita
  #5  
Antiguo 15-04-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
El error que te da es un error de SQL, sería bueno que nos muestres las consultas.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 15-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
¿ Que Provider OleDB utilizas ? ¿ OleDB for ODBC, o Jet 4.0 ?. En caso de utilizar el primero te recomiendo cambiar al segundo (como comenté en un mensaje anterior).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 16-04-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Hombre según el error que pone....
Cita:
Empezado por HugoH
Datos da el siguiente error "Error de sintaxis en la cláusula FROM".
... eso me suena a de todas todas a una sentencia SQL, aunque como bien dices no habla en ningun caso de un componente TADOQuery bueno Huguito si quieres respuestas aclara un poquito más lo que has hecho

Saludos, Tony
Responder Con Cita
  #8  
Antiguo 19-04-2004
Avatar de VolaRe
VolaRe VolaRe is offline
Miembro
 
Registrado: ago 2003
Posts: 121
Poder: 23
VolaRe Va por buen camino
Bueno yo voy a intentar aportar mi granito de arena, aunque yo se mucho de esto.

Código:
HugoH digo:
Yo estoy tratando de insertar el record de la siguiente manera:

Form2.ADOTable1.Open;
Form2.ADOTable1.Insert;
Form2.ADOTable1.FieldByName('Campo1').AsString := 'xxx';
Form2.ADOTable1.FieldByName('Campo2').AsString := 'yyy';
Form2.ADOTable1.FieldByName('Campo3').AsString := 'zzz';
Form2.ADOTable1.FieldByName('Campo4').AsString := 'qqq';
Form2.ADOTable1.Post;
Pues bien creo que el fallo te lo da porque no le indicas que edite, el codigo correcto seria, y si lo que digo es erroneo o una solemne tonteria ma corregis, ¿ok?

Código:
Form2.ADOTable1.Open;
Form2.ADOTable1.Insert;
Form2.ADOTable1.Edit; //y esta es la linea que debes añadir
Form2.ADOTable1.FieldByName('Campo1').AsString := 'xxx';
Form2.ADOTable1.FieldByName('Campo2').AsString := 'yyy';
Form2.ADOTable1.FieldByName('Campo3').AsString := 'zzz';
Form2.ADOTable1.FieldByName('Campo4').AsString := 'qqq';
Form2.ADOTable1.Post;
Bueno espero no haber dicho una tonteria, ta otra
Responder Con Cita
  #9  
Antiguo 19-04-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Con la instrucción insert el registro ya es editable, asi que no hace falta poner un edit.

Saludos, Tony
Responder Con Cita
  #10  
Antiguo 16-04-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
como te dije en el mensaje...

Cita:
Empezado por tcp_ip_es
De todas formas esta es una manera de acceder a los datos de una Bd pero hay muchas más.....
Seguro que guillotmarc tiene más experiencia que yo, asi que puedes hacerle caso a él que seguro que acertarás. En cuanto a tu duda con el error SQL, como bien dice el otro gran genio de este foro, debes ponernos la sentencia sql que metes en la query y a partir de hay podremos decirte algo.

Saludos, Tony
Responder Con Cita
  #11  
Antiguo 16-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

Como utiliza un componente ADOTable, no ha escrito ninguna consulta SQL en un Query. Por lo que el Error con toda probabilidad viene de los propios componentes o el motor ADO.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:55:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi