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)
-   -   Una mano :( con Insert en Zeo's (https://www.clubdelphi.com/foros/showthread.php?t=29373)

RyCk 20-01-2006 08:30:57

Una mano :( con Insert en Zeo's
 
Llevo ya como 3 días intentado insertar en una tabla en MySQL con Zeo's


Campo Tipo Atributos Nulo Predeterminado Extra Acción
Clave varchar(5) No
Materia varchar(50) No
Creditos int(2) No 0

Query.ParamByName('Clave').AsString := Clave.Text;
Query.ParamByName('Materia').AsString := Materia.Text;
Query.ParamByName('Creditos').AsInteger := StrToInt(Creditos.Text);
Query.ExecSQL;

Me marca una Exepcion en la clase EDatabaseError con el mensaje Query: parameter 'Clave' not Found

en esta linea 593 con el texto Result := FParams.ParamByName(Value); en el archivo ZastracRODataset

ahora, como le puedo hacer para decir en que tabla insertar ya que en ningun lado le pongo donde debe insertar esos campos... imagino que a eso se refiere el error...

DTAR 20-01-2006 13:06:04

Yo que vos lo haria con sql
 
Query.ParamByName('Clave').AsString := Clave.Text;
Query.ParamByName('Materia').AsString := Materia.Text;
Query.ParamByName('Creditos').AsInteger := StrToInt(Creditos.Text);
Query.ExecSQL;
*********************************************
query.sql.text:=('insert into TU_TABLA (clave,materias,creditos) values ("'+Clave.Text+'","'+Materia.Text+'","'+StrToInt(Creditos.Text)+'" ');
query.execsql;

roman 20-01-2006 17:45:34

Cita:

Empezado por RyCk
como le puedo hacer para decir en que tabla insertar ya que en ningun lado le pongo donde debe insertar esos campos

Es que debes especificarle la consulta SQL a la componente Query. Puedes hacerlo como dice DTAR, o bien usando parámetros, como estabas intentando:

Código Delphi [-]
Query.SQL.Text :=
  'insert into tabla (clave, materias, creditos) ' +
  values(:clave, :materias, :creditos)';

¿Notas los dos puntos antes de clave, materias y credito en values? Eso es lo que le indica al Query que son parámetros. De hecho los puedes llamar como quieras, no necesariamente deben coincidir con los nombres de los campos.

Ya que asignes la sentencia SQL, y antes de ExecSQL, llenas los parámetros tal y como lo estabas haciendo.

En mi opinión queda mucho más prolijo hacerlo así.

// Saludos

walito 21-01-2006 01:41:47

Yo los insert los hago asi de simple:

Código Delphi [-]
DbMySQL.Ztable.TableName := 'presupuesto';
DbMySQL.Ztable.Open;
DbMySQL.Ztable.Append;

DbMySQL.Ztable.FieldByName('pre_nombre').AsString := EdtNombre.Text;
DbMySQL.Ztable.FieldByName('pre_apellido').AsString := EdtApellido.Text;
DbMySQL.Ztable.FieldByName('pre_empresa').AsString := EdtEmpresa.Text;
DbMySQL.Ztable.FieldByName('pre_telefono').AsString := EdtTelefono.Text;
DbMySQL.Ztable.FieldByName('pre_fecha').AsDateTime := NOW;

DbMySQL.Ztable.Post;
DbMySQL.Ztable.Close;


con eso debe sobrar para tu insert
espero te sirba

walter

vtdeleon 21-01-2006 01:48:27

Saludos

walito, es asi de simple porque estas usando un table y solo basta con aplicar el metodos Insert, pero el amigo RyCk esta utilizando un Query la cual debe usar sentencias para trabajar.

walito 21-01-2006 03:55:54

Bien, entiendo.

pero tu estas haciendo:

Código Delphi [-]
Query.SQL.Text :=
  'insert into tabla (clave, materias, creditos) ' +
  values(:clave, :materias, :creditos)';


que pasa si pones asi:
Código Delphi [-]
Query.SQL.clear;
Query.SQL.add ('insert into tabla (clave, materias, creditos) '
+'values (:clave, :materias, :creditos)');
.......

creo haberlo echo asi una vez, dime sino pruebo en mi trabajo
y te cuento, pero para qeu te complicas haciendolo asi
si trabajando con tablas insertas igual, o me equivoco?

Saludos

walter

RyCk 21-01-2006 06:39:47

mmm no precisamente, todo es cuestion de diseño, para un programador siempre es más facil insertar con tablas, pero para el usuario general algunas veces es mejor llenar los campos en un from y ponerle un boton para insertarlas :) por lo general yo siento que las tablas son más utiles cuando quieres hacer cambios rapidos ;) de todas maneras gracias watito :D por cierto aun no pruebo :( se me quedo el proyecto en la memoria que curiosamente se quedo en el trabajo :'(

RyCk 21-01-2006 07:17:07

Roman eres la ley, y tú tambien DTAR tambien jala como lo dijiste, pero se me hace mucho más elegante de la manera que lo planteo roman :) jajaja les agradesco seguiré molestando por aqui hasta que le mueva a esto del delphi :D y pss ayudaré a quien pueda como a mi me han estado ayudando :D GRacias Gracias...


La franja horaria es GMT +2. Ahora son las 13:38:02.

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