Ir al contenido



Foto

guardar datos de StringGrid en mysql


  • Por favor identifícate para responder
10 respuestas en este tema

#1 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 03 julio 2012 - 04:53

que hay amigos a ver quien puede ayudarme tengo un StringGrid al cual le inserto datos por medio de varios edit pero lo que no e logrado hacer porque no se ni por donde empezar es esos registros que estan en el StringGrid1 mediantew un boton guardarlos en una base de datos en mysql no se si eso sea posible, ojala alguien pueda orientarme
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.280 mensajes
  • LocationRepública Dominicana

Escrito 03 julio 2012 - 05:21

Con eso se logar utilizando ciclos para ir recorriendo todas las filas y columnas e ir guardandola a la BD.

Saludos.
  • 0

#3 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 04 julio 2012 - 08:06

no puedes ayudarme un poco mas porque no tengo mucvha idea de esto lo intente con este codigo pero no me gurda ni el primer registro, no marca error pero no guarda nada



delphi
  1. tabla2.SQL.Clear;
  2. tabla2.Close;
  3.  
  4. tabla2.SQL.Add('insert into cobro( cantidad, codigo, descripcion, unitario) values(:, :cantidad, :codigo, :descripcion, :unitario) ');
  5.  
  6. stringGrid1.Cells[1, StringGrid1.Row]:=tabla2.ParamByName('cantidad').AsString;
  7. stringGrid1.Cells[2, StringGrid1.Row]:=tabla2.ParamByName('codigo').AsString;
  8. stringGrid1.Cells[3, StringGrid1.Row]:=tabla2.ParamByName('descripcion').AsString;
  9. stringGrid1.Cells[4, StringGrid1.Row]:=tabla2.ParamByName('unitario').AsString;



tabla2.Execute;
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.744 mensajes
  • LocationMéxico

Escrito 04 julio 2012 - 08:25

Me parece que es al revés y te falta la función ExecSQL.



delphi
  1. tabla2.SQL.Clear;
  2. tabla2.Close;
  3.  
  4. tabla2.SQL.Add('insert into cobro( cantidad, codigo, descripcion, unitario) values(:cantidad, :codigo, :descripcion, :unitario) ');
  5.  
  6. tabla2.ParamByName('cantidad').AsString    := stringGrid1.Cells[1, StringGrid1.Row];
  7. tabla2.ParamByName('codigo').AsString      := stringGrid1.Cells[2, StringGrid1.Row];
  8. tabla2.ParamByName('descripcion').AsString := stringGrid1.Cells[3, StringGrid1.Row];
  9. tabla2.ParamByName('unitario').AsString    := stringGrid1.Cells[4, StringGrid1.Row];
  10.  
  11. table2.ExecSQL;



Saludos

PD, Supongo que Table2 es un Query, porque si no, no me explico porque no hay error :D
  • 0

#5 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 04 julio 2012 - 08:28

gracias por la respuesta pero aun sigue sin guardarme nada nomas en cantidad y unitario  me pone cero pero eso es todo no se si haya otra manera de poder guardar
  • 0

#6 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 04 julio 2012 - 08:30

Lo que menciona enecumene es que debes hacer un ciclo que vaya recorriendo las filas del TStringGrid para ir metiendo los datos uno por uno... yo haría algunos cambios, comenzaría por usar un TQuery...



delphi
  1. for i := 1 to StringGrid1.RowCount do
  2. begin 
  3.     Query.SQL.Clear;   
  4.     Query.SQL.Add('insert into cobro( cantidad, codigo, descripcion, unitario) values(:, :cantidad, :codigo, :descripcion, :unitario) ');
  5.    
  6.     Query.ParamByName('cantidad').AsString := stringGrid1.Cells[1, i] ;
  7.     Query.ParamByName('codigo').AsString :=  stringGrid1.Cells[2, i];
  8.     Query.ParamByName('descripcion').AsString :=  stringGrid1.Cells[3, i];
  9.     Query.ParamByName('unitario').AsString :=  stringGrid1.Cells[4, i];
  10.  
  11.     Query.ExecSQL;
  12. end;



A veces sucede que se agrega una línea de más en el TStringGrid a medida que agregas filas para insertar datos, por eso, ddicionalmente yo haría una validación antes de hacer la inserción a la tabla que validara que la linea que estás por ingresar tenga datos... pero eso te lo dejamos de tarea  ;)  (y)  *-)

Saludox ! :)
  • 0

#7 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 04 julio 2012 - 08:41

gracias por la respuesta aunque me esta marcando el siguiente error #21S0 column count doesn´t match value count at row1 ya me tocara ver de que se trata
  • 0

#8 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 04 julio 2012 - 08:50

ya logre quitar el error pero sigo en las mismas no guarda nada
  • 0

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.744 mensajes
  • LocationMéxico

Escrito 04 julio 2012 - 08:51

gracias por la respuesta aunque me esta marcando el siguiente error #21S0 column count doesn´t match value count at row1 ya me tocara ver de que se trata


Quita los dos puntos y la coma antes de cantidad, si hay otro datos tendras que ponerlo en el query y asignarlo en los parametros.

Saludos
  • 0

#10 genyus00

genyus00

    Advanced Member

  • Miembros
  • PipPipPip
  • 51 mensajes

Escrito 03 enero 2018 - 03:27


delphi
  1. procedure Guardar();
  2. var
  3.   StrSQl, cantidad, codigo, descripcion, unitario: string;
  4. i : integer;
  5. begin
  6.   for i := 0 to StringGrid1.RowCount - 1 do
  7.   begin
  8.     cantidad := stringGrid1.Cells[0, i];
  9.     codigo := stringGrid1.Cells[1, i];
  10.     descripcion := stringGrid1.Cells[2, i];
  11.     unitario := stringGrid1.Cells[3, i];
  12.     StrSQl := 'insert into cobro(cantidad, codigo, descripcion, unitario) ' +
  13.               ' values(' + cantidad + ',' + quotedstr(codigo) + ',' + quotedstr(descripcion) + ',' + quotedstr(unitario) + ')';
  14.     Query.SQL.text := StrSQl;
  15.     Query.Execsql;
  16.   end;
  17. end;

;)  Un poquito tarde, pero que sirva de algo para quien(es) en un futuro llegue(n) por estos lares..  (b)


  • 1

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.744 mensajes
  • LocationMéxico

Escrito 03 enero 2018 - 08:38

;)  Un poquito tarde, pero que sirva de algo para quien(es) en un futuro llegue(n) por estos lares.. 


Nunca es tarde para aportar los conocimentos. Muchas gracias amigo (b)

Saludos
  • 0