Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-10-2006
Arturo Arturo is offline
Miembro
 
Registrado: sep 2004
Posts: 91
Poder: 20
Arturo Va por buen camino
pasarle valores de stringGrid a una senetencia sql.

Buenos dias, como puedo pasarle los valores de stringGrid que ya esten almacenados a una sentenecia sql (Insert....), y ya le estableci nombres a las columnas, el error me dice:
El nombre id no es valido en este contexto, solo se permiten constantes, expresiones o variables. No se permiten nombre de columna.

Código PHP:
tengo un procedimiento de guardar:
for 
i:= 0 to StringGrid1.RowCount do begin
   SQL
.Add('INSERT INTO equipocomputo(COMP_ID, COMP_DESCRIP, COMP_ESPECIFICACIONES,  COMP_CON_IVA) values(');
   
SQL.Add(StringGrid1.Cells[0,i] + ',');
   
SQL.Add(StringGrid1.Cells[1,i] + ',');
   
SQL.Add(StringGrid1.Cells[2,i] + ',');
   
SQL.Add(StringGrid1.Cells[3,i] + ')');
   
ExecSQL;
   
next:
   
end
gracias
Responder Con Cita
  #2  
Antiguo 11-10-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Utiliza parámetros mejor que utilizar el Add.
Se me ocurre que te puede estar fallando por:
(1) Algunos campos (de tipo string) posiblemente les falte la comilla.
(2) En la segunda pasada debes hacer un Clear del SQL.

NOTA: Para código Delphi, utiliza la etiqueta DELPHI en lugar de la de PHP.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 11-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
useasé:
Código Delphi [-]
   SQL.Clear;
   SQL.Add('INSERT INTO equipocomputo(COMP_ID, COMP_DESCRIP, COMP_ESPECIFICACIONES,  COMP_CON_IVA) values(');
   SQL.Add(':prComp_id, :prcomp_descrip, :prcomp_especificaciones, :prcomp_con_iva');
  if not Prepared then Prepare; // agilizar la cosa ya que es un bucle;
for i:= 0 to StringGrid1.RowCount - 1 do begin
   Parambyname('prComp_id').Asxx := Stringgrid1.cells[0,i]);
  // dar los demás parámetros
   ExecSQL;
   next: // este no sé de donde viene
   end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 12-10-2006
Arturo Arturo is offline
Miembro
 
Registrado: sep 2004
Posts: 91
Poder: 20
Arturo Va por buen camino
ok, gracias y hice unos cambio y ya me quedo de la siguiente forma por si alguien le interesa:
Código PHP:
var i:integer;
begin
  with ADOQuery1 
do begin
  Close
;
  
SQL.Clear;
  if 
not Prepared then Prepared;
  for 
i:= 1 to StringGrid1.RowCount do begin
   SQL
.text:='INSERT INTO equipocomputo(COMP_ID, COMP_DESCRIP, COMP_ESPECIFICACIONES,  COMP_CON_IVA)';
   
SQL.text:=SQL.text 'values(:prComp_id, :prcomp_descrip, :prcomp_especificaciones, :prcomp_con_iva)';
   
Parameters.ParamByName('prComp_id').Value:=StringGrid1.Cells[0,i];
   
Parameters.ParamByName('prcomp_descrip').Value:=StringGrid1.Cells[1,i];
   
Parameters.ParamByName('prcomp_especificaciones').Value:=StringGrid1.Cells[2,i];
   
Parameters.ParamByName('prcomp_con_iva').Value:=StringGrid1.Cells[3,i];
   
ExecSQLend;
 
end
y listo los ingreso primero al stringGrid1 y luego con un boton de guardar los recorre y recorre el stringrid y los ingresa. bye
Responder Con Cita
  #5  
Antiguo 12-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Vale, pero si usas SQL.TEXT no tienes que hacer un SQL.Clear, ya lo hace internamente el componente, si lo piensas es lógico, al modificar la propiedad Text que contiene todas las líneas, es normal que primero se borre todo lo que haya.

Sin embargo, al usar SQL.Add estamos accediendo a una línea independiente, entonces, no se borra el contenido de las otras líneas.

Saludos ahorrativos (1 línea menos jejeje)

Otra cosa.... ¿el sql se modifica dentro del bucle para algo?... pues no, por eso lo saqué fuera. Dentro del bucle solamente se le da valores a los parámetros y se ejecuta. Mira la ayuda de Prepare .
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



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
PAsarle parametros a un trigger .. ingel SQL 2 19-05-2006 18:36:32
convertir fecha en la senetencia sql.. uper SQL 2 01-02-2006 18:20:13
Pasarle un objeto a una DLL adlfv OOP 3 19-08-2005 20:42:49
stringgrid , puedo recibir valores ? martita OOP 2 04-07-2005 19:21:03
Pasarle un parameto al With ...??? ingel Varios 4 30-01-2004 22:29:41


La franja horaria es GMT +2. Ahora son las 13:51:41.


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