Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   ¿Cómo insertar datos con Mysql? (https://www.clubdelphi.com/foros/showthread.php?t=80028)

daragor 30-08-2012 00:37:37

Amigos, una cosa mas.. este libro me sirve para encaminarme en la programacion con lazarus? entiendo que la base es pascal y "hereda" todo los referido a delphi tambien... NO se, uds. guienme, no hay guias asi para lazarus directamente, pero entiendo que es mas q nada un entorno

roman 30-08-2012 01:22:30

Cita:

Empezado por daragor (Mensaje 441177)
tu dices "un datamodule" .. donde está? minimamente me dirias como se usa? Ya que insertar muchos de esos objetos TSQLQuery en los forms me estropea un poco el diseño en tiempo de diseño.. por eso pense en reusar un query varias veces..

File|New|DataModule

No hay realmente ninguna ciencia en usarlos. Son como un Form pero sólo en diseño, en ejecución no se ven. Podría decirse que son una superficie donde colocar componentes no visuales como los datasets.

// Saludos

daragor 31-08-2012 23:52:22

Hola amigos, como hago para la sintaxis de este caso en insersion SQL. Aclaro que estoy usando un datamodule llamado DM y la instruccion sql del query es:

Código:

INSERT INTO articulos (nom,pc,pv,stk) VALUES (:NOM,:PC,:PV,:STK)
El codigo, A y M son variables del caso:
Código Delphi [-]
procedure TForm1.grabaClick(Sender: TObject);
begin
  case oper of
  'A': DM.QAlta_art.ParamByName('NOM').AsString:= Trim(nom.Text);
       DM.QAlta_art.ParamByName('PC').AsFloat:= StrToFloat(pc.Text);
       DM.QAlta_art.ParamByName('PV').AsFloat:= StrToFloat(pv.Text);
       DM.QAlta_art.ParamByName('STK').AsInteger:= StrToInt(stk.Text);
       DM.QAlta_art.ExecSQL;
  'M': ShowMessage('Codigo de Edicion de articulo.');
  end;
end

Me da el siguiente error al compilar:
unit1.pas(34,35) Hint: Parameter "Column" not used
unit1.pas(79,68) Error: Constant and CASE types do not match
unit1.pas(79,68) Error: Constant Expression expected
unit1.pas(79,68) Fatal: Syntax error, ":" expected but ";" found

Caral 01-09-2012 00:14:44

Hola
Código Delphi [-]
procedure TForm1.grabaClick(Sender: TObject);
begin
       DM.QAlta_art.text:= 'INSERT INTO articulos (nom,pc,pv,stk) VALUES (:NOM,:PC,:PV,:STK)';
       DM.QAlta_art.ParamByName('NOM').AsString:= Trim(nom.Text);
       DM.QAlta_art.ParamByName('PC').AsFloat:= StrToFloat(pc.Text);
       DM.QAlta_art.ParamByName('PV').AsFloat:= StrToFloat(pv.Text);
       DM.QAlta_art.ParamByName('STK').AsInteger:= StrToInt(stk.Text);
       DM.QAlta_art.ExecSQL;
       ShowMessage('Codigo de Edicion de articulo.');
end;
No me suena mucho que los nombres de los parametros sean iguales al de los campos.
Saludos

daragor 01-09-2012 00:27:54

ok, CARAL hola! lo del nombre de parametros no hay problema, si es mejor los cambio. Lo que pasa es q no me sirve este codigo xq yo en un boton Grabar tengo 2 opciones: Nuevo o Modificacion y las instruccion SQL del query a usar esta en un datamodule.. por eso pense en un CASE, pero no se quizas con un IF ELSE.. podria, Ya que mi problema es que no se como se ponen varias instrucciones en una sola opcion del CASE.

Caral 01-09-2012 00:34:02

Hola
Creo que seria mejor con if.
Saludos
PD: La sentencia sql la pondria por codigo, asi es mas manejable y se puede usar el query varias veces.

roman 01-09-2012 04:41:58

Cita:

Empezado por daragor (Mensaje 441418)
Hola amigos, como hago para la sintaxis de este caso en insersion SQL. Aclaro que estoy usando un datamodule llamado DM y la instruccion sql del query es:

Código:

INSERT INTO articulos (nom,pc,pv,stk) VALUES (:NOM,:PC,:PV,:STK)
El codigo, A y M son variables del caso:
Código Delphi [-]
procedure TForm1.grabaClick(Sender: TObject);
begin
  case oper of
  'A': DM.QAlta_art.ParamByName('NOM').AsString:= Trim(nom.Text);
       DM.QAlta_art.ParamByName('PC').AsFloat:= StrToFloat(pc.Text);
       DM.QAlta_art.ParamByName('PV').AsFloat:= StrToFloat(pv.Text);
       DM.QAlta_art.ParamByName('STK').AsInteger:= StrToInt(stk.Text);
       DM.QAlta_art.ExecSQL;
  'M': ShowMessage('Codigo de Edicion de articulo.');
  end;
end

Me da el siguiente error al compilar:
unit1.pas(34,35) Hint: Parameter "Column" not used
unit1.pas(79,68) Error: Constant and CASE types do not match
unit1.pas(79,68) Error: Constant Expression expected
unit1.pas(79,68) Fatal: Syntax error, ":" expected but ";" found

En realidad, hay algo que no nos muestras, porque no se sabe a qué se refiere eso de Column. Por otra parte, múltiples sentencias en un mismo caso de un case deben ir en un bloque begin-end.

No tengo claro que intentas hacer. ¿Porqué juntar en un mismo botón el código de inserción y el de modificado?

pd: el nombre de los parámetros es indistinto.

// Saludos

daragor 03-09-2012 23:33:14

Gracias roman, mi ignorancia con la sintaxis de pascal me juega malas pasadas. el begin y el end son los faltantes.

Lo del boton seria.. que tengo 3 botones: Nuevo - Modificar - Grabar, si el usuario presiona Nuevo, se activan los Tedit necesarios y el Boton Grabar, una vez llenado los datos, presiona Grabar y el programa reconoce q esta haciendo un Alta. Si presiona Modificar, lo mismo, pero el programa reconoce q es una modificacion de datos. Esta mal planteado roman?


La franja horaria es GMT +2. Ahora son las 01:58:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi