Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-01-2012
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Problema al insertar String en MySql

Buenas, sigo con problemas con el Delphi 2010.
No se si la versión que me baje estará limitada o algo por el estilo, pero ahora al insertar registros String en la BBDD solo me guarda el 1er caracter. (VERSION--> Embarcadero® Delphi® 2010 Version 14.0.3513.24210)

El tema es este, tengo dos BBDD, y quiero copiar una tabla (localidades) de una BBDD a otra.
Este es el código mediante el cual copi las tablas:

while not(QryLocs.Eof) do begin
localidad:= QryLocsnombreLocalidad.Value;
ShowMessage(localidad);
QryInsertarLocalidades.Close;
QryInsertarLocalidades.ParamByName('idProv').AsInteger:= QryLocsidProvincia.Value;
QryInsertarLocalidades.ParamByName('loc').AsString:= localidad;
QryInsertarLocalidades.ExecSQL;
QryLocs.Next;
end;

Ambas son TQuerys, y a la QryInsertarLocalidades le configulo los parametros:
* idProv: ftInteger
* loc: ftString

En el ShowMessage se muestra el String completo, por lo cual de la BBDD de origen, los datos vienen correctamente, pero en la BBDD destino se inserta solo la primer letra... o sea, si se recupera la localidad "Mar del Plata" solo inserta la "M".

Bueno, desde ya muchas gracias... un abrazo!!!
Responder Con Cita
  #2  
Antiguo 08-01-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, recuerda encerrar el código entre sus etiquetas oportunos, ejemplo:



Gracias
Responder Con Cita
  #3  
Antiguo 08-01-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
¿Como es la estructura de las dos tablas de las dos bases de datos?
Puede que una sea char(100) y la otra char(1).

¿Cual es el SQL que utilizas para hacer el insert?
Responder Con Cita
  #4  
Antiguo 08-01-2012
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
¿Como es la estructura de las dos tablas de las dos bases de datos?
Puede que una sea char(100) y la otra char(1).

¿Cual es el SQL que utilizas para hacer el insert?
En ambas tablas tengo varchar(250)..
El codigo es:

Código Delphi [-]
Insert into Localidades (idProvincia, nombreLocalidad)
values (:idProv, :loc)
Responder Con Cita
  #5  
Antiguo 08-01-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
¿Tienes algun trigger en la base destino que pueda estar truncando el nombre?
Responder Con Cita
  #6  
Antiguo 09-01-2012
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
¿Tienes algun trigger en la base destino que pueda estar truncando el nombre?
No tengo ningun Trigger... pero evidentemente es problema del Delphi 2010.
Cree una nueva aplicacion en Delphi 2010, le puse una TQuery que hacia el insert, y seguia insertando solo la primer letra.
Copie exactamente lo mismo en Delphi 5, e inserto el String completo.

La verdad que estoy desorientado, si habrá algo de configuracion o quiza la version que baje tiene algun bug.

Desde ya muchas gracias a todos los que le dedicaron unos minutos a este hilo, y si se les ocurre algo, será bienvenido!!
Saludos y Feliz 2012 para todos!!!!
Responder Con Cita
  #7  
Antiguo 09-01-2012
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Y agrego una cosa mas...
Recien probe en Delphi 2010, hacer una insercion usando una TTable, de la siguiente forma:

Código Delphi [-]
   TableLocalidades.Open;
   TableLocalidades.InsertRecord([1, 1, 'La Plata']);       //idLocalidad, idProvincia, nombreLocalidad

Y me inserto el String completo...
O sea que el problemita esta con el insert de la TQuery, o con la manera en que toma el parámetro.
En el parametro elijo ftString, como lo hice siempre en Delphi 5.

Bueno, solo quería dejar este comentario como para agregar mas info al problemita este, y para que queden mas datos acerca de todas las pruebas que hice por si a alguien más le sucede algo parecido...

Abrazo para todos, y gracias nuevamente!!!
Responder Con Cita
  #8  
Antiguo 09-01-2012
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Bueno, tanto insistir con esto encontre una posible solucion... En lugar de pones el parametro de la TQuery como ftString, lo puse como ftMemo, quedando el codigo de la siguiente manera:

Código Delphi [-]
   QryInsertarLocalidad.Close;
   QryInsertarLocalidad.ParamByName('prov').AsInteger:= 1;
   QryInsertarLocalidad.ParamByName('loc').AsMemo:= 'La Plata';
   QryInsertarLocalidad.ExecSQL;

De esta manera inserta en la BBDD el String completo, en lugar de solo insertar el primer caracter...
Ahora ya me puedo ir a dormir relativamente tranquilo...
Como dije anteriormente, si le encuentran la vuelta al parametro ftString, se agradecera!!!

Abrazo!!!
Responder Con Cita
  #9  
Antiguo 24-01-2012
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
Hola, como estas, a mi tambien me hace el mismo error y ya no se como solucionarlo, es mas, estaba buscando algun SP para D2010 ya que creo que es un bugs, porque lo haces con ADO y funciona perfectamente pero con el TQuery de la paleta BDE y te inserta el primer caracter unicamente.

si aguien sabe algo, o sabe de algun SP para D2010 les agradezco que me avisen.

voy a probar mientras tanto con AsMemo.

Saludos a todos
__________________
\_--> NoShY <--_/
Responder Con Cita
  #10  
Antiguo 07-02-2012
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Cita:
Empezado por noshy Ver Mensaje
Hola, como estas, a mi tambien me hace el mismo error y ya no se como solucionarlo, es mas, estaba buscando algun SP para D2010 ya que creo que es un bugs, porque lo haces con ADO y funciona perfectamente pero con el TQuery de la paleta BDE y te inserta el primer caracter unicamente.

si aguien sabe algo, o sabe de algun SP para D2010 les agradezco que me avisen.

voy a probar mientras tanto con AsMemo.

Saludos a todos

El AsMemo trae problemas tambien... una lastima, evidentemente es un bug de Delphi 2010 que no permite insertar String con MySQL usando el TQuery.

Si insertas varios parametros String con el AsMemo, inserta todo mezclado y repite campos (inserta el email en el nombre, apellido, email, etc)... por ejemplo:
Código Delphi [-]
            QryInsertarSocio.close;
            QryInsertarSocio.ParamByName('nroSocio').AsInteger:= nroSocio;
            QryInsertarSocio.ParamByName('idPlan').AsInteger:= idPlan;
            QryInsertarSocio.ParamByName('idZona').AsInteger:= idZona;
            QryInsertarSocio.ParamByName('apellido').AsMemo:= apellido;
            QryInsertarSocio.ParamByName('nombre').AsMemo:= nombre;
            QryInsertarSocio.ParamByName('sexo').AsMemo:= sexo;
            QryInsertarSocio.ParamByName('fechaNac').AsDate:= fechaNac;
            QryInsertarSocio.ParamByName('tipoDoc').AsInteger:= idTipoDoc;
            QryInsertarSocio.ParamByName('nroDoc').AsMemo:= nroDocumento;
            QryInsertarSocio.ParamByName('direccion').AsMemo:= direccion;
            QryInsertarSocio.ParamByName('codPostal').AsMemo:= codPostal;
            QryInsertarSocio.ParamByName('idProvincia').AsInteger:= idProvincia;
            QryInsertarSocio.ParamByName('idLocalidad').AsInteger:= idLocalidad;
            QryInsertarSocio.ParamByName('telefono').AsMemo:= telefono;
            QryInsertarSocio.ParamByName('celular').AsMemo:= celular;
            QryInsertarSocio.ParamByName('email').AsMemo:= email;
            QryInsertarSocio.ParamByName('activo').AsInteger:= 1;
            QryInsertarSocio.ExecSQL;

Y si usas el AsString, inserta solo la primer letra...
Código Delphi [-]
  
            QryInsertarSocio.close;
            QryInsertarSocio.ParamByName('nroSocio').AsInteger:= nroSocio;
            QryInsertarSocio.ParamByName('idPlan').AsInteger:= idPlan;
            QryInsertarSocio.ParamByName('idZona').AsInteger:= idZona;
            QryInsertarSocio.ParamByName('apellido').AsString:= apellido;
            QryInsertarSocio.ParamByName('nombre').AsString:= nombre;
            QryInsertarSocio.ParamByName('sexo').AsString:= sexo;
            QryInsertarSocio.ParamByName('fechaNac').AsDate:= fechaNac;
            QryInsertarSocio.ParamByName('tipoDoc').AsInteger:= idTipoDoc;
            QryInsertarSocio.ParamByName('nroDoc').AsString:= nroDocumento;
            QryInsertarSocio.ParamByName('direccion').AsString:= direccion;
            QryInsertarSocio.ParamByName('codPostal').AsString:= codPostal;
            QryInsertarSocio.ParamByName('idProvincia').AsInteger:= idProvincia;
            QryInsertarSocio.ParamByName('idLocalidad').AsInteger:= idLocalidad;
            QryInsertarSocio.ParamByName('telefono').AsString:= telefono;
            QryInsertarSocio.ParamByName('celular').AsString:= celular;
            QryInsertarSocio.ParamByName('email').AsWideString:= email;
            QryInsertarSocio.ParamByName('activo').AsInteger:= 1;
            QryInsertarSocio.ExecSQL;

La verdad, que no se que es lo que pasa... si alguien encuentra algo de esto, por favor comenten.
Abrazo para todos!!!!
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
insertar cadenas en string grid isaacrg Varios 2 07-04-2010 02:40:00
Insertar Imagenes Utilizando Mysql The_figo MySQL 0 29-11-2006 16:45:42
insertar espacios en un string davidgaldo Varios 2 18-10-2005 17:12:42
Insertar registros en MySQL TONIAM MySQL 0 24-05-2005 15:47:49
Insertar Fechas en MySQL bustio SQL 2 12-01-2005 14:03:22


La franja horaria es GMT +2. Ahora son las 23:07:35.


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