Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   erro valores nulos se agregan a la base de datos =S (https://www.clubdelphi.com/foros/showthread.php?t=16122)

sakuragi 17-11-2004 00:05:49

erro valores nulos se agregan a la base de datos =S
 
hola que tal

eh estado intentando guardar los datos a mysql medinato un zquery
pero me a estado arrogando valores nulos ala base de datos y un error

despues de poner los datos en los edit y darle clic en el boton guardar

me sale una ventana que dice:" source file not found: zdbcmysqlutils.pas" como titulo de la ventana

en el edit sale "path to source file:" y adentro sale el archivo "zdbcmysqlutils.pas2 con boton "browse"

despues de eso le doy ignore y sale otro mensaje:
"project prueva.exe raised exception class ezsqlexception with message 'sql error: unknown table 'null' in field list'. process stopped. use step or run to continue."


el codigo de la aplicacion es:
zconnection1.connect;
zquery1.Active:=true;
zconnection1.disconnect;

dentro del zquery1 el codigo es:

insert into clientes (nombre,apellido) values (:nom.text,:ape.text)


de hante mano gracias

roman 17-11-2004 00:29:17

Los primeros errores son consecuencia secundaria del último y se deben a que al encontrarse una excepción el debugger no sabe dónde localizar el código fuente de las unidades donde se genera la excepción. Esto lo puedes corregir agregando las rutas a todos los subdirectorios de $(ZEOS)\src a Tools|Enviroment Options|Library|Browsing Path donde $(ZEOS) es la carpeta donde hayas instalado las componentes.

El problema real se debe a que tu consulta es incorrecta. Para empezar parece ser que utilizas parámetros (por los dos puntos : ) pero nunca los sustituyes antes de activar la consulta. Pero aún así, nom.text y ape.text no parecen tener sentido. Mi impresión es que nom y ape son componentes TEdit en tu formulario Delphi y estás tratando de asignar sus valores a la lista values de la consulta.

Recuerda que el lenguaje SQL es independiente del código Delphi y no se conocen el uno al otro. Dicho de otra forma, no puedes hacer referencia desde SQL a objetos de Delphi. Para SQL es como si nom y ape fuesen nombres de tablas en cuyo caso tendrían que estar declaradas en algún lugar de la consulta.

Si mi impresión es correcta entonces tu consulta debe ser así:

Código SQL [-]
insert into clientes (nombre, apellido) values (:un_nombre, :un_apellido)

Y debes usarla así:

Código Delphi [-]
ZConnection1.Connect; // sobra porque al activar el query se hace la conexión
ZQuery.ParamByName('un_nombre').AsString := nom.text;
ZQuery.ParamByName('un_apellido').AsString := ape.text;
ZQuery.Active := true;

// Saludos

sakuragi 17-11-2004 08:38:22

hola que tal

gracias de nuevo

ya salio bien todo


pero.. creo que zeos no es nada practico tengo que haser muchos agustes para que funciones, eso no es practico al momento de quere poner el sistema en otra maquina.

saludos

sakuragi 17-11-2004 09:36:08

hola que tal

ya puse la librerias del zeos en al ruta de src y todos sus subdirectorio el cuadro ya no me salio pero.. me sale otro mesanje de error si me graba pero sale ese error y tengo que ir al mene run y resetear

"project prueva.exe raised exception class EZXQLException with message 'can not retrive resulset data'. process stopped. use step or run continue."


de hante mano gracias

roman 17-11-2004 15:56:02

Cita:

Empezado por sakuragi
pero.. creo que zeos no es nada practico tengo que haser muchos agustes para que funciones, eso no es practico al momento de quere poner el sistema en otra maquina.

Sinceramente creo que debes postergar un juicio de este tipo hasta que no tengas un poco más de práctica en el uso de las componentes. El error que tenías no es competencia de Zeos y lo de las rutas es igual para cualquier componente. Y no sé a qué ajustes te refieres para instalar el sistema en otra máquina. Básicamente lo único que hay que hacer es copiar la librería libmysql.dll junto con el sistema.

Más difícil es tener que ajustar cadenas de conexión ODBC, por ejemplo, para usar este tipo de conectividad con MySql.

Las componentes Zeos ciertamente carecen de algunas cosas y les falta documentación pero creo que es de los más adecuado que hay sin necesidad de pagar por algo.

Si te interesa también he probado las componentes MyDac de CoreLab y a "ojo de buen cubero" me han parecido bastante mejores que Zeos pero son de pago (aunque no mucho).

En lo que se refiere al último error que te marca se debe a algo que se me escapó desde el principio:

Poner la propiedad Active en true- que es lo mismo que usar el método Open -se usa sólo para consultas de tipo SELECT que regresan registros. Para otro tipo de consultas como INSERT, UPDATE, DELETE debe usarse el método ExecSQL:

Código Delphi [-]
ZConnection1.Connect;
ZQuery.ParamByName('un_nombre').AsString := nom.text;
ZQuery.ParamByName('un_apellido').AsString := ape.text;
ZQuery.ExecSQL;

Esto es normal en casi cualquier componente de tipo Query.

// Saludos


La franja horaria es GMT +2. Ahora son las 05:26:18.

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