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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-01-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cómo conectar "simple" a DB Access

Hola, me ha surgido una duda existencial, me han encargado hacer una exportación de datos a un programa de contabilidad (otro más), pero este usa una BD Access.
El asunto es que necesito conectar a esa base de datos para pasarle una serie de registros habituales en estos casos: apuntes, cuentas, etc. y me han surgido varias dudas después de haber estado consultando algunos posts en clubdelphi.
La primera es que hay que usar una "cadena" de conexión y no sé exactamente qué poner ahí, he visto que hay varias posibilidades de "motores", entre ellos estos:
Cita:
Microsoft Jet 4.0 OLE DB Provider
Microsoft OLE DB Provider for ODBC Drivers
Microsoft OLE DB Simple Provider
Si utilizo los componentes de la pestaña "ADO", ¿qué motor debo usar?, me gustaría que el cliente no tenga que instalar nada, si es posible.
Y otra duda, el usuario y password predeterminado en access, ¿cuál es?
Y de momento esas son todas las dudas.
Por si sirve de algo: Delphi 5 + IBX + Firebird 1.5 ---> ¿ADO? + ¿ODBC? + Access
Responder Con Cita
  #2  
Antiguo 08-01-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Hola Casimiro: Generalmente lo que se hace es exportar en formato texto y luego cualquier programa de contabilidad importa, al inyectar los datos directamente siempre puedes tener el problema que si pasa algo al otro programa lo achaquen a que se han metido datos a las tablas por "fuerza bruta".

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 08-01-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
Hola,
Independientemente del sistema que utilices, yo he utilizado
Microsoft Jet 4.0 OLE DB Provider
cuando he utilizado ADO.
Cuando generas la cadena de conexión, puedes mirarla ( es un texto ) para que el propio usuario pueda cambiarla , o utilizar un ini para que la bbdd pueda residir en cualquier lugar.
Si miras la cadena de conexión, encontrarás dentro de ella
"C:\datos\bbdd.mdb". Para personalizar la conexión sólo tienes que cambiar este dato y reconectar. Con ODBC sería más peliagudo ya que tienes que editar el odbc. Se podría hacer por código, pero lo veo más complicado.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #4  
Antiguo 08-01-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si utilizo los componentes de la pestaña "ADO", ¿qué motor debo usar?, me gustaría que el cliente no tenga que instalar nada, si es posible.
Y otra duda, el usuario y password predeterminado en access, ¿cuál es?
Y de momento esas son todas las dudas.
Por si sirve de algo: Delphi 5 + IBX + Firebird 1.5 ---> ¿ADO? + ¿ODBC? + Access
Hola Casimiro.
La forma habitual para conectar a Access con ADO (utilizando el motor de Jet 4, que es el de Access) es la primera que has propuesto:
Microsoft Jet 4.0 OLE DB Provider
Lo único imprescindible es tener en el ordenador instaladas las MDAC y mínimamene actualizadas (cosa muy habitual si el sistema está actualizado); Si vas a trabajar con alguno muy antiguo (w98), tal vez podrías revisarlo. En este caso no hace falta ni siquiera que esté Access instalado.

Para Access, salvo que la Base de Datos tenga seguridad implementada, se usa Admin y contraseña vacía.

Delphi 5 + IBX + Firebird 1.5
Delphi 5 + ADO + Access

La cadena de conexión la puedes obtener utilizando el asistente que viene con el ADOConnection/ADOTable; De todas formas si quieres todos los detalles, incluyendo las que incluyen contraseña en la Base de Datos y las que tienen seguridad implementada, puedes verlas aquí.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 08-01-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Muchas gracias a todos, es que ando perdido en estas cosas de access, jet, mdb

Cita:
Empezado por marcoszorrilla
Hola Casimiro: Generalmente lo que se hace es exportar en formato texto y luego cualquier programa de contabilidad importa, al inyectar los datos directamente siempre puedes tener el problema que si pasa algo al otro programa lo achaquen a que se han metido datos a las tablas por "fuerza bruta".marcoszorrilla
Sí, siempre lo hago de esa forma (fichero de texto), salvo cuando no queda otra solución, recuerdo una vez que un programa sólo importaba de un .dbf, y en este caso el programa lee de una BD "puente", no escribo en su base de datos "principal", no me gusta meterme en lios innecesarios
Responder Con Cita
  #6  
Antiguo 08-01-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Bueno, ya he acabado un programita para pruebas y gracias a vuestra ayuda ha sido bastante sencillo, lo único raro es que me resulta extraño no tener transacciones, me recuerda la época del dbase, qué tiempos aquellos.
Responder Con Cita
  #7  
Antiguo 08-01-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bueno, ya he acabado un programita para pruebas y gracias a vuestra ayuda ha sido bastante sencillo, lo único raro es que me resulta extraño no tener transacciones, me recuerda la época del dbase, qué tiempos aquellos.
.Select Clientes
.Set Filter to Codigo = "4300001"
.Browse
.Quit

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #8  
Antiguo 08-01-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por marcoszorrilla Ver Mensaje
.Select Clientes
.Set Filter to Codigo = "4300001"
.Browse
.Quit

Un Saludo.
... con unos poquitos comandos sobraba para hacer una gestión
Responder Con Cita
  #9  
Antiguo 09-01-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
No se que tipo de transacciones?? o que serán.
Lo que si se es que si se quiere que se ejecute una acción con eficacia y sin que tenga problemas en access se usa algo como esto, sobre todo si se trabaja en red y con varios usuarios a la vez:

Código Delphi [-]
procedure TFOrdProd.BitBtn1Click(Sender: TObject);
var bok : TBookMarkStr;
begin
   OrdenCompra.Active := False;
   OrdenCompra.SQL.Text := 'Select OrdenCompra From OrdenProd WHERE OrdenCompra ='+QuotedStr(Edit7.Text);
   OrdenCompra.Active := True;
   If Edit7.Text = OrdenCompra.Fields[0].Value then
   MessageDlg('La orden de Compra ya Existe',mtError,[mbOK],0)
   else
   If Edit3.Text = '' then MessageDlg('Debe especificar el código del cliente',mtError,[mbOK],0)
 else

   begin
      ShortDateFormat := 'dd/mm/yyyy';
      DataModule1.AC1.BeginTrans;
      try
         If Nueva then
         QTemp.SQL.Text := 'Insert Into OrdenProd (Codorden, FechaInicio, FechaRequerido, CodUsuario, Comentarios, CodCliente, Prioridad, Enrutada, OrdenCompra) '+
                           'Values (' +Edit2.Text+', '+QuotedStr(Edit4.Text)+', '+QuotedStr(DateToStr(DateTimePicker1.DateTime))+', '+
                            QuotedStr(Edit5.Text)+', '+QuotedStr(Memo1.Text)+', '+Edit3.Text+', '+IntEdit1.Text+', True, '+QuotedStr(Edit7.Text)+')'
         else
         QTemp.SQL.Text := 'Update OrdenProd set FechaRequerido = '+QuotedStr(DateToStr(DateTimePicker1.DateTime))+', Comentarios = '
                            +QuotedStr(Memo1.Text)+', CodCliente = '+Edit3.Text+', Prioridad = '+IntEdit1.Text+
                            ' Where CodOrden = '+Edit2.Text;

         QTemp.ExecSQL;
         guardada := true;
         IF Nueva  then
         begin
            QOrdProd.Requery();
            QOrdProd.Last;
         end
         else begin
                bok := QOrdProd.Bookmark;
                QOrdProd.Requery();
                QOrdProd.Bookmark := bok;
              end;
         DataModule1.AC1.CommitTrans;
         If Nueva then If MessageDlg('Orden Guardada.'+#13+'¿Desea agregar items a la orden?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
         Nueva := False;
         QOrdProd.Close;
         QOrdProd.Open;
         TabSheet3.Show;
      except
         on E:Exception do DataModule1.AC1.RollbackTrans;
      end;//try
end;
Lo mas seguro es que me equivoco pero para mi lo colocado en rojo son transacciones, digo., me equivoco?
Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 09-01-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
entonces sí que tiene transacciones.

Por cierto, ¿qué componente es el que has nombrado AC1 (DataModule1.AC1.BeginTrans)?

Muchas gracias, Caral, ese código me viene muy bien para lo que necesito hacer.
Responder Con Cita
  #11  
Antiguo 09-01-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Uso los componentes ADO, este es el ADOConnection.
ADoConnection1
Es mas fácil de escribir.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 09-01-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Amigo sabes que de estas cosas no se, pero si necesitas ayuda tu nada mas pide.
En lo que este a mi alcance (osea no mucho) con gusto.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #13  
Antiguo 09-01-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por Caral Ver Mensaje
Hola
Amigo sabes que de estas cosas no se, pero si necesitas ayuda tu nada mas pide.
En lo que este a mi alcance (osea no mucho) con gusto.
Saludos
Muchas gracias, amigo
Responder Con Cita
  #14  
Antiguo 14-04-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 20
richy08 Va por buen camino
hola que tal estoy tratando de hacer uan interfaz con access pero veo que cambia un poco el codigo del tadoconnections en esta linea que inicias la transaccion.
DataModule1.AC1.BeginTrans;

no es necesario primero darle un connect ??? o siempre esta conectado
a la bd estoy un poco enredado con estas sentencias gracias.
Responder Con Cita
  #15  
Antiguo 14-04-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Tiene que estar conectado.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #16  
Antiguo 14-04-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 20
richy08 Va por buen camino
gracias caral por responder, me surge otra duda al estar conectado todo el tiempo el componente no interfiere con el funcionamiento normal del aldelo ??, la pregunta es por que tengo dos etsaciones en red que estaran escribiendo datos al mismo tiempo que mi aplicacion, y una ultima duda encontre un codigo tuyo

Código:
       except
         on E:Exception do DataModule1.AC1.RollbackTrans;
      end;//try
con este codigo en dado caso que exista algun error por x razones se desaran los cambios de la inserccion o cualquier movimiento mil gracias por tu tiempo.
Responder Con Cita
  #17  
Antiguo 14-04-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
No afecta que este conectado ya que es el ADOconnection no una tabla en especial, lo uso en red con varios programas corriendo sin problemas.
Lo otro, la teoria dice que si, pero la practica no es tan cierta, depende de como se incluyan o modifiquen los datos.
Saludos
PD: Tendrias que preguntarle a alguien que sepa, yo apenas aprendo.
__________________
Siempre Novato
Responder Con Cita
  #18  
Antiguo 14-04-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 20
richy08 Va por buen camino
gracias por tu tiempo caral, creo que ahora estoy un poco mas confiado en meterle mano al aldelo, y pues ya somos dos los que estamos aprendiendo access mil gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
encriptacion simple "xor" GunMiNiHo Varios 8 25-03-2009 14:30:55
"Como Realizo instruciones SQL con ODBC y Access"!!! danny Conexión con bases de datos 5 07-05-2008 14:52:09
Como hacer que se vea "Si" en vez de "TRUE" en un DBGrid lu9eui C++ Builder 2 07-08-2007 04:03:13
Windows Vista "casca" con un simple cursor animado Casimiro Noteví La Taberna 4 02-04-2007 20:27:27


La franja horaria es GMT +2. Ahora son las 19:38:36.


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