Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   como volver a traer datos de un stringgrid? (https://www.clubdelphi.com/foros/showthread.php?t=62277)

TURBOIGOR 14-12-2008 20:58:23

como volver a traer datos de un stringgrid?
 
hola les cuento mi problema

estoy utilizando un stringgird para hacer una asignacion d turnos...en la primer columna tengo los horarios cada media hr y en la primer fila el nombre del personal a cargo. Tambien hay un datetimpecker para cambiar de fecha.
Con el evento onselectcell del stringgrid se abre una pantalla para ingresar un nuevo turno (nombre del cliente y servicio a prestar por ej: Gustavo/corte de pelo). Lo que quiero saber es como hacer para dejar guardados esos turnos en la posicion donde los cargue...ya que cuando cambio de dia y vuelvo al dia donde estaban los turnos ingresados no estan mas.
Desde ya muchas gracias

Caral 14-12-2008 23:30:30

Hola
Vi la pegunta, pero no se exactamente lo que podria hacer.
No entiendo muy bien, guardar los datos, guardarlos en donde?
Me podrias decir como cargas los datos?. y donde quieres guardarlos?
Si es en una base de datos, dime con que trabajas.
Saludos

TURBOIGOR 14-12-2008 23:45:31

tengo una base de datos en access y dentro una tabla q se llama turnos.

cuando hago onSelectCell se abre otro form para ingresar el nombre del cliente q se va a atender y el servicio a realizar y asi se guarda:

turnos.StringGrid1.Cells[cell_col,cell_row]:=edit3.Text+'/'+edit6.text;
turnos.ADOTable1.open;
turnos.ADOTable1.insert;
turnos.ADOTable1.FieldByName('Fecha_turno').value:=turnos.DateTimePicker1.Date;
turnos.ADOTable1.FieldByName('Hora_turno').Value:=turnos.stringgrid1.cells[0,cell_row];
turnos.ADOTable1.FieldByName('Codigo_Cliente').Value:=edit1.text;
turnos.ADOTable1.FieldByName('Apellido').Value:=edit2.text;
turnos.ADOTable1.FieldByName('Nombre').Value:=edit3.text;
turnos.ADOTable1.FieldByName('Legajo').Value:=edit4.text;
turnos.ADOTable1.FieldByName('Nombre_emp').Value:=edit5.text;
turnos.ADOTable1.FieldByName('Servicio').Value:=edit6.text;
turnos.ADOTable1.post;
turnos.ADOTable1.close;
nuevo_turno.Close;

cuando cambio la fecha pongo q m blankee el stringgrid

procedure TTurnos.DateTimePicker1Change(Sender: TObject);
var x,y:integer;
begin
for x:= 1 to stringgrid1.ColCount-1 do
for y:= 1 to stringgrid1.RowCount-1 do
stringgrid1.Cells[x,y]:='';
end;

si kiero ir a una fecha mas adelante y desp volver atras ningun turno keda guardado en el stringgrid...
m conviene en la base de datos hacer 2 campos con la posicion d la fila y de la columna en dond estoy guardando los datos y traelos a traves d una consulta?

Caral 14-12-2008 23:53:23

Hola
Veo que solo guardas (Hora_turno) del stringrid.
Tambien veo que usas un adotable.
Veo que al fina de la inserción cierras la tabla, (donde la abres otra vez?).
Cuando cargas los datos al stringrid?, como?
El programa me parece que por el momento es pequeño, me gustaria verlo con la base de datos.
Puedes hacer un Zip e ir a avanzado y adjuntar el archivo, asi lo veria mejor.
Saludos

TURBOIGOR 14-12-2008 23:58:02

el programa zipeado pesa 550 kb como hago para subirlo?

Caral 14-12-2008 23:59:28

Hola
1-Sube la base de datos aparte.
2-En el zip no pongas el exe del programa, quitalo.
Saludos

TURBOIGOR 15-12-2008 00:08:20

el foro t deja subir 29kb zipeado y la base de datos m keda en 80kb y el programa m keda en 35kb como hago?:confused:

Caral 15-12-2008 00:11:13

Hola
Caso dificil, no se que hacer, hay en internet varios sitios pero no me acuerdo donde.
El asunto es que viendolo me sentiria mas seguro.
saludos

TURBOIGOR 15-12-2008 00:27:10

estoy subiendo los archivos a my 4 shared....t paso el link

http://www.4shared.com/file/75990038...nos_nuevo.html

Caral 15-12-2008 00:29:52

Hola
Ya lo tengo, dame un minuto para revisarlo.
Saludos

Caral 15-12-2008 00:39:03

Hola
Tengo un problema para abrirlo.
Por favor subelo otra vez pero necesito que enlaces todo a C:\.
Osea, la direccion que le pones es una ruta definida, si no esta en esa misma direccion no la puedo abrir, situa el proyecto en c y cargalo.
Ojala me explique bien.
Esto se soluciona con un datamodule y un ini, pero veo que no los tienes.
Saludos

Caral 15-12-2008 00:45:54

Hola
A ojo, lo que puedo ver, tienes muchos problemas, el proyecto abre todo a la vez, no hay datamodule, la direccion tiene que ser exacta.
Bueno, esta un poco desarreglado, hay que darle un retoque.
Saludos

TURBOIGOR 15-12-2008 00:51:57

listo...colocando la base de datos en C creo q t tendria q funcionar bajalo aca

http://www.4shared.com/file/75992857...a7/TURNOS.html

Caral 15-12-2008 01:04:55

Hola
Fue peor el remedio que la enfermedad.:D
Ahora ni siquiera me deja arrancar delphi.
El problema son las direcciones, no importa que uses delphi 7 y yo 6, ya me ha pasado antes.
El problema es la direccion exacta.
Cuando haces un proyecto, le indicas una direccion, tanto al proyecto como a la base de datos, si no coincide en mi ordenador me dara error, no podre verlo.
Tienes que colocar el proyecto completo en una direccion en comun.
Crea una carpeta en C:\ con el nombre Proyecto, quedaria asi: C:\Proyecto.
Ahi coloca todo.
Abre delphi y haz que el programa funcione en esa nueva direccion, correlo.
Ahora ya delphi sabra que el programa corre ahi.
Yo creo que podre verlo, eso espero.
Para que veas como es esto, te puedo decir la direccion en donde lo tienes ahora, es esta:

Como ves si yo no pongo toda esa direccion no lo abrire.
Saludos

TURBOIGOR 15-12-2008 01:18:42

veamos ahora

http://www.4shared.com/file/75995505.../PROYECTO.html

Caral 15-12-2008 01:32:53

Hola
No se por que me sigue dando problemas, me gustaria ayudarte pero no le llegamos a esta parte.
Aqui te dejo un zip con el programa, esta en la carpeta Proyecto y dentro de otra carpeta Turnos.
Abrelo con delphi, correlo, que delphi encuentre la base de datos, y los unit.
Reenviamelo ya funcionando en esa mismas carpetas, no las modifiques.
Espero poder ayudate, pero si no paso esto, no podre.
Saludos

Caral 15-12-2008 01:39:39

Hola
El problema mas grabe es que usas una conexion individual en ciertos form, eso es lo que parece.
Osea en algunos form tienes o un adotable o un adoquery que esta ligado a una direccion de la base de datos, si no es la misma, no puedo abrir el proyecto.
Me muero de las ganas de cambiar eso.
Saludos
PD: Recuerda que la base de datos tiene que estar en ese mismo directorio, ponla dentro de la carpeta Turnos.
Trata de ponerlo directo en C:, no en documents and setins, administrador etc.
Que dificil abrir este proyecto, por eso se usa un adoconnection, esto evita todo este asunto.

Caral 15-12-2008 02:01:46

Hola
Ya lo abrí, que dificil me la pusiste, pero para ser Novato lo pude hacer.
Voy a revisarlo.
Saludos

TURBOIGOR 15-12-2008 02:14:50

Que Suerte Q Lo Abriste
 
Bueno ahora espero que lo revises y puedas aconsejarme algo .
:)

Caral 15-12-2008 02:27:59

Hola
Lo que veo asta el momento.
AdoTable1 es el que inserta los datos en la tabla.
Esto lo hace bien
El asunto es:
1- Cuando arranca el programa carga en el stringrid los datos de los empleados y colocas las horas, bien.
2- Insertas los turnos, bien.
3- Quieres ver lo que insertaste, PERO, como lo vas a ver si no llamas a la tabla?.
Tienes que hacer el mismo procedimiento que haces cuando cargas los empleados, solo que definiendo las columnas adecuadas para que cargen los turnos.
aqui cargas el grid.
Código Delphi [-]

with StringGrid1 do
begin
//Título de las Filas
Cells[0, 0] := 'Horario/Profesionales';
Cells[0, 1] := '09:00';
Cells[0, 2] := '09:30';
Cells[0, 3] := '10:00';
Cells[0, 4] := '10:30';
Cells[0, 5] := '11:00';
Cells[0, 6] := '11:30';
Cells[0, 7] := '12:00';
Cells[0, 8] := '12:30';
Cells[0, 9] := '13:00';
Cells[0, 10] := '13:30';
Cells[0, 11] := '14:00';
Cells[0, 12] := '14:30';
Cells[0, 13] := '15:00';
Cells[0, 14] := '15:30';
Cells[0, 15] := '16:00';
Cells[0, 16] := '16:30';
Cells[0, 17] := '17:00';
Cells[0, 18] := '17:30';
Cells[0, 19] := '18:00';
Cells[0, 20] := '18:30';
Cells[0, 21] := '19:00';
Cells[0, 22] := '19:30';


//Titulo de las Columnas
consulta:= 'Select [Apellido_emp], [Nombre_emp] from Personal';
adoquery1.Close;
adoquery1.SQL.Text := consulta;
adoquery1.Open;

i:= 2;
datasource1.DataSet.First;

while not datasource1.DataSet.Eof do
begin
stringgrid1.ColCount := i;
stringgrid1.Cells[(i - 1),0]:= datasource1.DataSet.FieldByName('Apellido_emp').AsString + ' '+ datasource1.DataSet.FieldByName('Nombre_emp').AsString;
//stringgrid1.Cells[1, (i - 1)]:= datasource1.DataSet.FieldByName('Nombre_emp').AsString;
//stringgrid1.Cells[2, (i - 1)]:= datasource1.DataSet.FieldByName('ubicacion').AsString;

inc(i);
datasource1.DataSet.Next;
end;
La celda 0 es la hora, la celda 1 sera un empleado, la 2 el otro etc.
Ahora, para que se vea despues de que lo coloques puedes poner un boton de actualizar u otro procedimiento.
Voy a ver como le meto mano, para empezar ya puse un datamodule y un adoconnection.
Saludos


La franja horaria es GMT +2. Ahora son las 08:26:16.

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