PDA

Ver la Versión Completa : exportar fichero de excell a mysql


coletaun
21-10-2006, 19:32:28
Hola a todos:

Tengo el sigiente codigo:


procedure TForm1.Button2Click(Sender: TObject);
var
Excel, Libro: Variant;
i: integer;
cliente,telefono: string;
begin
Excel:=CreateOleObject('Excel.Application');
Excel.Visible := False;
Excel.DisplayAlerts:= False;
Excel.WorkBooks.Add('C:\mail_sms\telefonos.xlt');
Excel.WorkBooks[1].WorkSheets[1].Name := 'telefonos';
Libro := Excel.WorkBooks[1].WorkSheets['telefonos'];
cliente:='1234';

i:=1;
repeat

telefono:=Libro.Cells[i,1];
i:=i+1;

tabla.SQL.Clear;
tabla.SQL.Add(' INSERT INTO `cola_xml` (`COLA`, `CLIENTE`,`FECHA` ) VALUES('+Quotedstr(telefono)+', '+Quotedstr(cliente)+',now())');
tabla.execsql;

until Excel.Cells[i,1].value = 0;

ShowMessage(' El fichero de telefonos.xlt ha sido creado exitosamente');
Excel.Quit;


end;


Cuando recoge los datos y los inserta en la tabla cola_xml, lo hace perfectamente, hasta que encuentra un registro en la celda que contiene algun espacio, caracter de texto etcc.

me da el siguiente mensaje de error :

"could not comvert variant of type(olestr) into tyoe (double) "

¿como meto en el campo de la tabla mysql cualqueir valor de las celdas con cualquier caracter?

Gracias de antemano

dec
21-10-2006, 20:18:06
Hola,

A lo mejor no acierto en absoluto, pero, se me ocurre que hay algún problema con las comillas, o sea, que tú estás escribiendo algo así:


'+Quotedstr(telefono)+'


Y eso está resultando en comillas sobre comillas... no sé si me explico. Pienso que deberías utilizar la función "QuotedStr" o usar las comillas simples, pero, no ambas cosas a la vez.

Por otro lado se me ocurre (porque el error que te aparece da para pensarlo) que hay algún problema de tipos... que acaso no puedes entrecomillar un tipo "double", ni "integer", por ejemplo, que estos valores hay que insertarlos (en VALUES) "tal cual".

coletaun
21-10-2006, 20:38:03
Efectivamente es un problema de tipos, pues el error lo da antes de insertar el registro en la tabla, eb:

telefono:=Libro.Cells[i,1];
al extraer el dato de ta tabla de excell, es decir si hay un telefono asi: 654 654432 con un caracter vacio, da el error, pero antes de insertarlo en el registro, al leer 654 654432 en vez de 654654432.

Si todos los registro de la tabla de excel son numericos y no tienen ningun espacio, no da ningun error.

Gracias

nosferatu177
26-06-2007, 23:02:18
Efectivamente es un problema de tipos, pues el error lo da antes de insertar el registro en la tabla, eb:

telefono:=Libro.Cells[i,1];
al extraer el dato de ta tabla de excell, es decir si hay un telefono asi: 654 654432 con un caracter vacio, da el error, pero antes de insertarlo en el registro, al leer 654 654432 en vez de 654654432.

Si todos los registro de la tabla de excel son numericos y no tienen ningun espacio, no da ningun error.

Gracias

hola, oye me gustaria saber si ya pudiste solucionar tu problema, lo q pasa es q yo estoy en una situación parecida(exportar datos de un archivo de excel a una tabla de mysql), solo q no se por donde comenzar :o; si solucionaste el problema podrias poner un ejemplo de como exportar datos desde este tipo de archivos :), de antemano muchas gracias