Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-08-2012
daragor daragor is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 91
Poder: 14
daragor Va por buen camino
Compañero roman, entonces los textos, cadenas, de consultas SQL irian en la propiedad SQL de un TSQLQuery? de ser asi... como hago para indicar distintos tipos de consultas a un solo objeto TSQLQuery? no consigo buenas guias para aprender. Por cierto, estoy usando Lazarus..
Responder Con Cita
  #2  
Antiguo 29-08-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
La mejor guía para aprender
Responder Con Cita
  #3  
Antiguo 29-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por daragor Ver Mensaje
como hago para indicar distintos tipos de consultas a un solo objeto TSQLQuery?
Es que, en mi opinión, eso es una mala práctica. Cada consulta debe verse como un objeto en sí: clientes, recibos, agregaCliente, agregaRecibo, etc. Todos representados por un Query localizado en un DataModule.

Es preferible gastar unos cuantos bytes más en recursos usando múltiples querys que tratar de economizar reusando un sólo query.

Así, por ejemplo, tu consulta de este hilo estaría representada por un query qryAgregaCompra con el siguiente texto en su propedad SQL:

Código SQL [-]
insert into compras (fec,paga,mon,esta) values(:fecha, ago, :monto, :estatus)';

Al momento de agregar una compra simplemente suples los valores:

Código Delphi [-]
qryCompras.ParamByName('fecha').AsDate := Fecha;
qryCompras.ParamByName('pago').AsFloat := 0;
qryCompras.ParamByName('monto').AsString := Total.Text;
qryCompras.ParamByName('estatus').AsString := 'CARGADA';

qryCompras.ExecSQL;

quedándote, según yo, un código mucho más limpio.

// Saludos
Responder Con Cita
  #4  
Antiguo 29-08-2012
daragor daragor is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 91
Poder: 14
daragor Va por buen camino
Casimiro, impresionante.. puede ser algo muy muy util para mi en cuanto a sintaxis. Muchas gracias.

Roman! estoy entendiendo lo que dices compañero, claramente.. y me parece excelente, soy un obsesivo con la limpieza y orden del codigo, asi q me viene 10 puntos. Si puediera me pagaria un curso de delphi, lazarus.. pero en mi cuidad no hay. Asi que gracias muchas por los consejos!
Ahora, lo importante... 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..

Pd: que buen hilo, podrian editar el titulo del post para futuras busquedas.
Responder Con Cita
  #5  
Antiguo 29-08-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Lee el libro que te he enlazado antes, es lo mejor de lo mejor, te lo puedo asegurar.


Cita:
Empezado por daragor Ver Mensaje
Pd: que buen hilo, podrian editar el titulo del post para futuras busquedas.
¿Y qué título le podemos poner?
Responder Con Cita
  #6  
Antiguo 29-08-2012
daragor daragor is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 91
Poder: 14
daragor Va por buen camino
No soy nadie para decir un titulo pero te puedo sugerir compañero Casimiro.. algo asi como "Correcta insersion de datos en Mysql"

Si! voy a estar a full con ese libro, mil gracias!
Responder Con Cita
  #7  
Antiguo 30-08-2012
daragor daragor is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 91
Poder: 14
daragor Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 31-08-2012
daragor daragor is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 91
Poder: 14
daragor Va por buen camino
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
Responder Con Cita
  #9  
Antiguo 01-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
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
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 01-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por daragor Ver Mensaje
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
Responder Con Cita
  #11  
Antiguo 30-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por daragor Ver Mensaje
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
como insertar comilla simple en mysql server granodetoro MySQL 1 03-05-2011 03:12:41
Como insertar y Guardar registro en MySql con Delphi of PHP kurono Varios 2 23-10-2010 00:18:47
Como insertar y Guardar registro en MySql con Delphi of PHP kurono Varios 0 21-08-2010 03:49:12
insertar datos en mysql con zeos Stanley Conexión con bases de datos 1 04-05-2007 22:46:01
No puedo insertar datos (por parámetros) en una tabla - Zeos, Mysql belen MySQL 2 13-10-2006 00:16:51


La franja horaria es GMT +2. Ahora son las 10:14:02.


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
Copyright 1996-2007 Club Delphi