Club Delphi  
    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 02-09-2004
scooterjgm scooterjgm is offline
Miembro
 
Registrado: ago 2004
Posts: 115
Poder: 20
scooterjgm Va por buen camino
migracion de base de datos dbExpress a ADO

hola a todos!!

kiero migrar mi base de datos de dbExpress a ADO. alguien me puede decir si estas ekivalencias son correctas?? las q no se si me las podeis decir...

dbExpress ADO

SQLConnection------------------------------ADOConnection
SQLClientDataSet----------------------------- ¿?
SQLQuery-----------------------------------ADOQuery


StarrTransaction-----------------------------BeginTrans
DBConnection--------------------------------Connection

TransactionDesc.IsolationLevel---------------- ¿?
TransactionDesc.TransactionID---------------- ¿?
SQLConnection.InTransaction----------------- ¿?
SQLConnection.Commit(TransactionDesc)------ ¿?

Si alguien me puede ayudar o decirme alguna pagina donde se explike como hacer esto q me ayude. ya tengo la nueva base de datos creada.
Responder Con Cita
  #2  
Antiguo 02-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

SQLClientDataset ---------------------------------- ADOQuery + DatasetProvider + ClientDataset
TransactionDesc.IsolationLevel --------------------- ADOConnection.IsolationLevel TransactionDesc.TransactionID ---------------------- no existe
SQLConnection.InTransaction ----------------------- ADOConnection.InTransaction
SQLConnection.Commit(TransactionDesc) ------------ ADOConnection.Commit

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 02-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Por cierto, para obtener un equivalente al SQLClientDataset necesitas utilizar 3 componentes (ADOQuery + DatasetProvider + ClientDataset), aunque dado que el ADOQuery genera un Dataset bidireccional y modificable, seguramente en muchos casos no te hará falta conectarlo a un ClientDataset, podrás resolver el problema desde el mismo ADOQuery.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 02-09-2004
scooterjgm scooterjgm is offline
Miembro
 
Registrado: ago 2004
Posts: 115
Poder: 20
scooterjgm Va por buen camino
muchas gracias por la informacion...

pensaba q el componente TADODataSet era el ekivalente al TSQLClientDataSet. ME puedes decir para que sirve ese componente??

De nuevo muchas gracias por tu ayuda
Responder Con Cita
  #5  
Antiguo 02-09-2004
scooterjgm scooterjgm is offline
Miembro
 
Registrado: ago 2004
Posts: 115
Poder: 20
scooterjgm Va por buen camino
es decir, conecto el SQLQuery directamente al dataSetProvider y si no funciona lo paso por un ClientDataSet, no?? o directamente el SQLQuery al DataSource??
Responder Con Cita
  #6  
Antiguo 02-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Cita:
Empezado por scooterjgm
pensaba q el componente TADODataSet era el ekivalente al TSQLClientDataSet. ME puedes decir para que sirve ese componente??
En muchos casos le puede suplir perfectamente. Un SQLClientDataset internamente són en realidad 3 componentes (SQLQuery + DatasetProvider + ClientDataset), por lo que su equivalente con ADO también tendrían que ser esos 3 componentes.

Aunque a diferencia del SQLQuery (que es unidireccional y de solo lectura), el ADOQuery es bidireccional y modificable, por lo que se puede utilizar para conectarlo directamente a una grid, o para modificar un registro. Cosa que no se podia hacer con el SQLQuery, lo que nos obligaba a conectarlo a un ClientDataset.

NOTA: Entre el ADODataset y el ADOQuery practicamente no hay ninguna diferencia. Internamente uno se basa en el otro (aunque no recuerdo el orden). Las diferencias que se ven, es que uno solo sirve para acceder a datos resultados de una consulta SQL (el ADOQuery), mientras que el otro también se puede usar para recuperar una tabla entera, ...

Cita:
Empezado por scooterjgm
es decir, conecto el SQLQuery directamente al dataSetProvider y si no funciona lo paso por un ClientDataSet, no?? o directamente el SQLQuery al DataSource??
Supongo que te refieres al ADOQuery.

Primero prueba utilizando solo un ADOQuery conectado directamente al Datasource. Unicamente en el caso de que necesites alguna de las características avanzadas del ClientDataset, vale la pena que lo utilizes (conectando el ADOQuery a un DatasetProvider y este al ClientDataset y este ultimo al Datasource).

Las características únicas del ClientDataset (por lo tanto presentes en el SQLClientDataset) y que no estan en el ADOQuery, son cosas como los campos de agregado, nesteds datasets, modificaciones en cache, ... (aunque los componentes ADO tienen su propio enfoque para estos problemas).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 03-09-2004
scooterjgm scooterjgm is offline
Miembro
 
Registrado: ago 2004
Posts: 115
Poder: 20
scooterjgm Va por buen camino
Muchas gracias, me ha kedado mas claro. ANtes me ekivoke como bien te has dado cuenta. me referia al ADOQuery.

Muchas gracias por todo. Espero q con esto me baste, pero una ultima pregunta...

para q sirve el transactionDesc en el dbExpress?? veo q en ADO no se usa, puedo prescindir de ello??
Responder Con Cita
  #8  
Antiguo 03-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Sirve para poder tener varias transacciones simultaneamente, y poder acceder a cada una de ellas de forma independiente.

En cambio en ADO (no existe ningún tipo de TransactionDesc), si no recuerdo mal, al abrir más de una transacción, quedan anidadas, y solo podrás confirmarlas/cancelarlas en orden inverso al de su creación.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #9  
Antiguo 09-09-2004
scooterjgm scooterjgm is offline
Miembro
 
Registrado: ago 2004
Posts: 115
Poder: 20
scooterjgm Va por buen camino
tengo estas instrucciones para saber si hay una transaccion activa o no en FireBird... como seria en ADO??

if not SQLConnection.InTransaction then
begin
TransactionDesc.TransactionID := 1;
TransactionDesc.IsolationLevel := xilReadCommitted;
TransactionDesc.TransactionID :=TransactionDesc.TransactionID;
SQLConnection.StartTransaction(TransactionDesc);
end;

el equivalente en ado seria el siguiente??


if not SQLConnection.InTransaction then
begin
ADOConnection.IsolationLevel := xilReadCommitted;
ADOConnection.BeginTrans;
end;


prescinsiendo del TransactionDesc........¿?¿?¿?

una cosa mas... es lo mismo esto??

SQLClientDataSet.ApplyUpdates(1);---->ADODataSet.UpdateRecord;

SQLClientDataSet.ExecuteDirect(sql);--->ADODataSet.Execute(sql);

Integer(ADOConnection.ExecuteDirect(string) = 0);----->?????????????

Muchas gracias

Última edición por scooterjgm fecha: 09-09-2004 a las 12:26:55.
Responder Con Cita
  #10  
Antiguo 10-09-2004
scooterjgm scooterjgm is offline
Miembro
 
Registrado: ago 2004
Posts: 115
Poder: 20
scooterjgm Va por buen camino
nadie puede ayudarme??
Responder Con Cita
  #11  
Antiguo 10-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
¿ Ayudarte en que ?. En este momento tienes que hacer pruebas, y utilizar un poco la ayuda de Delphi.

Estas buscando equivalencias de código que no existen.

Cita:
Empezado por scooterjgm
if not SQLConnection.InTransaction then
begin
TransactionDesc.TransactionID := 1;
TransactionDesc.IsolationLevel := xilReadCommitted;
TransactionDesc.TransactionID :=TransactionDesc.TransactionID;
SQLConnection.StartTransaction(TransactionDesc);
end;

el equivalente en ado seria el siguiente??


if not SQLConnection.InTransaction then
begin
ADOConnection.IsolationLevel := xilReadCommitted;
ADOConnection.BeginTrans;
end;
No. Se parece pero no es lo mismo. Simplemente no puedes obtener lo mismo. En el primer caso obtienes una transacción a la que puedes acceder posteriermente mediante su correspondiente TransactionDesc. En cambio en ADO no existe ningún TransactionDesc por lo que posteriormente solo podrás acceder a las transacciones (para anularlas o finalizarlas), de forma anidada.

Por lo tanto no es lo mismo, ni hay forma de obtener lo mismo. Aunque esto ya te lo dije hace unos dias

Cita:
Empezado por scooterjgm
SQLClientDataSet.ApplyUpdates(1);---->ADODataSet.UpdateRecord;
No, una simple consulta a la ayuda de Delphi te lo confirmaría. Lo que más se parece al ApplyUpdates, es el UpdateBatch. Aunque para eso tienes que trabajar en ADO en modo de BatchUpdates (modificaciones en Caché), lo cual no es habitual. En ADO, usualmente los cambios se pasan a la base de datos, directamente en el Post, sin esperar a ningún ApplyUpdates, o por el estilo.

De nuevo la forma de trabajar en ADO y dbExpress es muy distinta, y no vas a encontrar equivalentes.

Cita:
Empezado por scooterjgm
SQLClientDataSet.ExecuteDirect(sql);--->ADODataSet.Execute(sql);
Consultando la ayuda de Delphi o con una sencilla prueba (en 2 minutos la tienes hecha) verias que no. Lo que mas se parece es el Execute sobre el ADOConnection.

Cita:
Empezado por scooterjgm
Integer(ADOConnection.ExecuteDirect(string) = 0);
¿ Esto funciona ?. ¿ Para que quieres pasar de booleano a entero ?. En todo caso esta pregunta no me parece que valga la pena ni responderla. Ya está respondida en la pregunta anterior. Los códigos de retorno para saber si la ejecución ha tenido éxito, deberias mirarlos en la ayuda de Delphi, no te va a morder.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #12  
Antiguo 13-09-2004
scooterjgm scooterjgm is offline
Miembro
 
Registrado: ago 2004
Posts: 115
Poder: 20
scooterjgm Va por buen camino
Perdona mi ignorancia.

Última edición por scooterjgm fecha: 14-09-2004 a las 18:06:25.
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 09:40:31.


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