PDA

Ver la Versión Completa : Conectar Delphi 6 a MySQL 5


DenisDiaz
14-07-2015, 23:02:58
Buenas tardes,

Quisiera saber si alguno de ustedes ha tenido la experiencia de conectar una aplicación en Delphi 6 a MySQL en su versión 5 usando ODBC y si es el caso cual sería la versión de driver ODBC que lo permite y no genera problemas.

Muchas gracias.

lgarcia
16-07-2015, 16:35:11
Yo probe con mysql-connector-odbc-5.2.6-win32.msi en Deplhi XE2 y trabajo bien, esa debe servirte tambien.

Saludos
Luis Garcia

DenisDiaz
16-07-2015, 17:43:44
Muchas gracias, probaré y le cuento. Saludos

DenisDiaz
24-08-2015, 16:58:58
Buenos dias.
Aun tengo el problema que les mencionaba, necesito conectar una app hecha en Delphi 6 a MySQL version 5. La conexión que uso es por ODBC. Lo raro que me ocurre es que tengo dos aplicaciones en delphi 6 que se conectan igual, una se conecta bien y la otra no se conecta bien, la que no se conecta cuando hago un select me devuelve solo algunas columnas y no todas, no entiendo que pueda pasar pues las dos aplicaciones son muy similares y se conectan de la misma forma, alguien ha lidiado con este problema?
Muchas gracias por sus respuestas.

Casimiro Notevi
24-08-2015, 17:27:11
una se conecta bien y la otra no se conecta bien, la que no se conecta cuando hago un select me devuelve solo algunas columnas y no todas

Salvo que la base de datos esté estropeada, lo que dices no puede ser. Un select devuelve los registros que tenga que devolver, siempre los mismos, ni más ni menos.

DenisDiaz
24-08-2015, 18:06:00
Hola.
Entiendo que no le vea sentido, pero así ocurre, debe ser debido a que la base de datos es mysql version 5 y el delphi es version 6. La base de datos está bien, si ejecuto consultas con un cliente me devuelve bien la informacion, pero desde delphi no me devuelve algunas consultas, lo único que se me ocurre que sea debido a las versiones pero lo más raro es que desde otra aplicacion de delphi 6 con la misma conexion por ODBC si funciona bien.

Casimiro Notevi
24-08-2015, 18:12:33
Entiendo que no le vea sentido, pero así ocurre,

No, si el problema no es que no le vea sentido, el problema es que no nos has dado ninguna información para poder ayudarte. Ya sabes, no somos adivinos ni podemos ver tu ordenador desde aquí :)

AgustinOrtu
24-08-2015, 19:17:40
No se puede usar Zeos en delphi 6?

DenisDiaz
24-08-2015, 20:01:09
Hola, les explico un poco mejor el problema.
Tengo dos aplicaciones hechas en delphi 6 y que llevan años trabajando con mysql version 4. Ahora se me hace necesario actualizar la version de mysql de la 4 a la 5, por lo que migré la base de datos a la version mysql 5. Uno de los programas funciona bien, pero el otro me daba errores y encontré que se debe a que no ejecuta bien las consultas, por ejemplo, en la base de datos tengo:
tabla sedes
campos
- id integer
- nombre varchar (30)
- direccion varchar (40)
- telefono varchar (20)
Cuando desde el programa ejecuto la consulta "select * from sedes" me devuelve solo las columnas id y direccion, omite columnas que existen.
Sé que no es un problema de la base de datos porque puedo acceder a ella por medio de SQLYog y al ejecutar la misma consulta obtengo todas las columnas, por lo que el problema parece estar relacionado con la comunicacion delphi-odbc-mysql.
Ambos programas se conectan a la base de datos por medio de ODBC por medio del componente TDatabase.

usar ZEOS es posible, pero implicaria bastantes modificaciones al programa.

Casimiro Notevi
24-08-2015, 20:10:10
Prueba simplemente poniendo un componente nuevo en el formulario, la setencia sql y lo enlazas con un datasource a un dbgrid cualquiera. Tiene que funcionar.

... me daba errores ... Seguimos igual, sin ser adivinos :) ¿qué errores?

DenisDiaz
24-08-2015, 20:14:15
Lo que hice fue eso, tengo un formulario donde escribo la consulta SQL y muestro el resultado en un Grid y veo que muestra solo algunas columnas. Los errores que mencionaba era debido a esto mismo, al solo cargarse algunas columnas el programa daba error al no encontrar el resto de las columnas, es decir, el error es uno solo y es que no muestra todas las columnas.

ecfisa
24-08-2015, 21:49:45
Hola DenisDiaz.
Lo que hice fue eso, tengo un formulario donde escribo la consulta SQL y muestro el resultado en un Grid y veo que muestra solo algunas columnas. Los errores que mencionaba era debido a esto mismo, al solo cargarse algunas columnas el programa daba error al no encontrar el resto de las columnas, es decir, el error es uno solo y es que no muestra todas las columnas.
Si no muestra todas las columnas de la tabla es por que no has incluido las ausentes en la instrucción SELECT.

Es decir, supongamos que tu consulta es así:
SELECT CAMPO1, CAMPO3, CAMPO4 FROM TABLA
Es lógico que no puedas acceder a CAMPO2 ya que no fué incluido en SELECT.

Podes hacer dos cosas:

Incluir la/las columnas que deseas que aparezcan,
SELECT CAMPO1, CAMPO2, CAMPO3, CAMPO4 FROM TABLA
O incluir todas,
SELECT * FROM TABLA

Saludos :)

DenisDiaz
25-08-2015, 20:38:03
Hola de nuevo, ya encontré la causa del problema. Las columnas que están creadas con:

character set latin1 collate latin1_spanish_ci

Son las que no se me muestran al seleccionarlas, por ejemplo:

`nombre` varchar(255) character set latin1 collate latin1_spanish_ci default '',
`color` varchar(50) default '',

En esos dos campos se muestra solo el llamado "color", el llamado "nombre" no se muestra en el select.
Para confirmar eliminé la tabla y la creé sin la especificacion (character set latin1 collate latin1_spanish_ci) y me funcionó bien, por tanto asumo que es un problema de compatibilidad en ese aspecto.
Al parecer hay otros problemas que estoy detectando, no parece buena idea seguir buscando conectar esa aplicacion en delphi 6 a mysql 5.
Que opinan? Muchas gracias.

Datos adicionales:

Aplicacion en Delphi 6 y 7

MySQL version 5.5

ODBC: mysql-connector-odbc-5.1.13-win32.msi

Consulta que ejecuto:

select * from fcia_sedes

Error que me da:

Query1: Field 'nombre' not found

Si muestro los resultados en un Grid me muestra solo algunas columnas, no muestra la columna llamada "nombre"

Tabla que uso de pruebas:

CREATE TABLE `fcia_sedes` (
`id` int(11) NOT NULL auto_increment,
`nombre` varchar(20) character set latin1 collate latin1_spanish_ci NOT NULL default '',
`descrip` varchar(255) character set latin1 collate latin1_spanish_ci default '',
`color` varchar(40) default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Casimiro Notevi
25-08-2015, 20:44:21
no parece buena idea seguir buscando conectar esa aplicacion en delphi 6 a mysql 5. Delphi 6 funciona perfectamente con mysql 5.
El problema que tienes es con los componentes, con la configuración, con ... ni idea, porque no tenemos tu base de datos, tu código fuente, etc. :confused:

elaguna
25-08-2015, 21:17:29
Lo que aquí parece haber es un problema de configuración con el servidor y/o el modo en que tratas los datos en tus aplicaciones.

Utilizas:
set latin1 collate latin1_spanish_ci

supongo que es por la cuestión de los acentos y las ñ's, en ese caso lo que te sugiero es que configures tu nuevo servidor para usar UTF-8, con esto creas tus bases y tablas sin tener que definir la codificación para cada campo.

Saludos.