PDA

Ver la Versión Completa : ADO y Access


dvlt
25-01-2008, 13:17:58
Hola compañer@s,
estoy abriendo una base de datos access con un ADOConnection, a través del cual mediante un ADODataSet lanzo la consulta pertinente para recorrer todos los registros. El problema viene cuando al recorrerlos, estoy haciendo una importacion de una tabla, me duplica de forma extraña, y triplica y cuadriplica... los registros en la tabla de destino. Puede ser que el controlador que utilizo no sea el adecuado, la base de datos Access origen es de Access 95, y la cadena de conexión que construyo es la siguiente:

Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;User ID=Admin;Data Source=C:\LOGWIN32\entorno\co_empre.mdb;Mode=Read;Extended Properties=";COUNTRY=0;CP=1252;LANGID=0x0409";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Global Partial Bulk Ops=2

Alguna idea???

Gracias de antemano!

Blackspike
25-01-2008, 13:25:46
Podrias poner el codigo con el que realizas el recorrido de los datos?

enecumene
25-01-2008, 14:29:54
Podrias poner el codigo con el que realizas el recorrido de los datos?

Vale Hombre estoy de acuerdo con BlackSpike postea el codigo que utilizas para hacer el recorrido, estoy seguro que no tiene nada que ver con ADO o con la base de Datos.

Saludos.

dvlt
25-01-2008, 17:30:12
Ok, pero el codigo no tiene nada del otro mundo...


while not ADODataset1.Eof do
begin
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO tabla_dest (campo1,campo2,campo3) VALUES (campo1ori,campo2ori,campo3ori));
Query1.ExecSQL;
Query1.Close;

ADODataset1.Next;
end;


es lo habitual, si es que por codigo no puede ser, porque me recorre el ADODataSet bien, lo unico que es como si no hiciera bien el ADODataSet1.Next; por eso que no sea el controlador ...

Gracias!

enecumene
25-01-2008, 17:36:46
Ok, pero el codigo no tiene nada del otro mundo...


while not ADODataset1.Eof do
begin
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO tabla_dest (campo1,campo2,campo3) VALUES (campo1ori,campo2ori,campo3ori));
Query1.ExecSQL;
Query1.Close;

ADODataset1.Next;
end;
es lo habitual, si es que por codigo no puede ser, porque me recorre el ADODataSet bien, lo unico que es como si no hiciera bien el ADODataSet1.Next; por eso que no sea el controlador ...

Gracias!

Bueno, te dire lo siguiente, estas haciendo una insercion, pero no se desde donde sacas los valores, pero estas insertando y haciendo un Next, cosa que no deberia, porque segun la logica del codigo es la causa de que te duplique y triplifique, para mi ese es el problema. Porque cuando hablabas de un recorrido se entiende que es una consulta de datos y no una insercion de datos. Quizas explicando un poco mas de lo que estas intentando hacer con ese codigo talvez te podamos dar otra solucion mejor.

Saludos.

Caral
25-01-2008, 17:50:44
Hola
Tienes un AdoConnection que enlaza la base de datos, tienes un ADODataset que no esta haciendo nada mas que leer el codigo que le das del query.
Yo quitaria el ADODataset y pondria un AdoQuery, quedaria asi:

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO tabla_dest (campo1,campo2,campo3) VALUES (campo1ori,campo2ori,campo3ori));
ADOQuery1.ExecSQL;

Es una inserción normal, no tiene por que hacerse mas grande de la cuenta, ademas se usa el exec, para que cerrar ademas el query.
Otra cosa no me gusta el ADD, tienes que hacer un clear anterior, prefiero TEXT, con esto me ahorro lineas de lectura, por tanto rapidez en el programa.
Bueno, es mi opinion.
Saludos

MVP
27-01-2008, 20:10:53
:)Hola.

soy nuevo en el foro pero me gustaria saber como realizo conexiones que no sea con paradox, que es la que he usado hasta ahora, ademas si es posible que alguien me envie algunos manuales de como se codifican los componentes en delphi, que aumente mi poco conocimiento que tengo ya que estoy empezando a explorar dicho lenguaje y me ha gustado hasta ahora.ç


gracias mil.....:)

Delphius
27-01-2008, 21:59:13
:)Hola.

soy nuevo en el foro pero me gustaria saber como realizo conexiones que no sea con paradox, que es la que he usado hasta ahora, ademas si es posible que alguien me envie algunos manuales de como se codifican los componentes en delphi, que aumente mi poco conocimiento que tengo ya que estoy empezando a explorar dicho lenguaje y me ha gustado hasta ahora.ç


gracias mil.....:)

Hola MVP,
Veo que eres nuevo en los foros. Bievenido... Por favor te pediría que respetaras el tema original del hilo. Tu pregunta no va con el tema tratado aquí. Debido a esto, te aconsejo la lectura de la guia de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

Con respecto a tus preguntas puedes acceder al FTP (http://www.terawiki.clubdelphi.com/) de clubdelphi y en la sección libros y manuales hay material que explican y tratan sobre Delphi, de hecho recomiendo La Cara Oculta de Delphi 4. Para más muestras accede a la wiki (http://wiki.clubdelphi.com/) de clubdelphi, allí encontrarás ejemplos. También recomiendo que realices una búsqueda (http://www.clubdelphi.com/foros/search.php). Lo que pides ya fue tratado. Por el tema de componentes puedo recomendar la lectura del sitio de JM (http://www.lawebdejm.com). Allí hay unos artículos que explican sencillamente este tema.

Saludos,