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

TURBOIGOR 15-12-2008 02:35:22

bueno gracias por ayudarm :) ...recuerda q cuando cambio la fecha del datetimepicker blankeo el stringgrid y luego creo q habria q hacer una consulta para q m traiga los datos...mi problema es q no se como ubicarlos en la misma posicion dond estaban en el string, igualment en la base de datos estoy guardando la posicion del registro.

Caral 15-12-2008 02:37:57

Hola
Ahora pregunto:
Por que en un stringGrid?.
El concepto para colocar los turnos esta bien, pero para visualizar los datos yo haria un form adicional con un dbgrid.
Un form para colocar los turnos, ya lo tienes y funciona, otro para ver el orden de estos.
No se, eso haria yo, en vez de estar actualizando el stringrid.
Saludos

TURBOIGOR 15-12-2008 02:42:36

podrias hacerme un ejemplo y mandarmelo por favor pq no entendi bien como se utilizaria el dbgrid

Caral 15-12-2008 02:48:06

Hola
Me imagino, no es por criticar, pero la sintaxis de programacion es malita.:D
El asunto es mostrar los resultados en otro form.
Pregunto:
Cuantos empleados hay, solo tres o puede que sean mas?.
Saludos

Caral 15-12-2008 02:53:45

Hola
Pregunto:
Es imperativo usar un stringGrid?.
Es una tarea y se necesita usar?.
Se puede usar cualquier componente?.
Te gusta el strigGrid y por eso lo quieres usar?
Saludos

Caral 15-12-2008 03:02:40

Hola
Es tarde.
Voy a hacerle unos cambios a mi gusto, por lo menos te serviran de ejemplo.
Mañana, con mas tiempo le meto mano.
Para empezar:
Voy a cambiar la manera como se llaman a los form y como arrancan, no es conveniente.
Voy a poner un form de visualizacion de datos.
Voy a enlazar los form como se debe.
Voy a quitar el evento Ondrawcell.
Voy a poner un Ini.
Ya puse el datamodule.
Bueno, para empezar creo que estara bien.:D
Saludos

TURBOIGOR 15-12-2008 03:08:40

seguimos mañana
 
Bueno OK , me parece bien , gracias por tu ayuda que me diste hasta aqui , mañana sguimos , a que hora te conectas ??? sos de aca de Argentina ??

Gracias;):):o

Caral 15-12-2008 03:10:15

Hola
Vivo en Costa Rica.
Mañana veras los cambios, te dejare un archivo y te lo explicare.
Saludos

TURBOIGOR 15-12-2008 16:27:18

hola Caral!!!

keria aclarart q el programa q t pase ayer d turnos es una partecita d todo un programa q estoy haciendo para una pelukeria. Dentro del programa general entre otras cosas, se pueden ingresar empleados nuevos...por eso en el stringgrid d turnos hago la consulta para q los agregue automaticamente cuando cargo un empleado nuevo....estare esperando tus respuestass
saludoss

Caral 15-12-2008 19:33:13

Hola
Ya tengo algunos cambios.
He modificado algunas cosas.
pregunto:
hay varios form, de clientes, empleados, modificar turnos qu no estan enlazados a nada.
que quieres hacer?
Saludos

TURBOIGOR 15-12-2008 20:38:06

el form d clientes y el d empleados estan enlazados a las 2 lupas q aparecen en Nuevo Turno y el form d modificar turnos no sabia como usarlos...xq tambien esta la posibilidad de modificar un turno o eliminarlo y eso tampoco sabia como hacerlo..cree el form pero no lo usaba

Caral 15-12-2008 20:53:10

Hola
Si este es parte de otro programa te sugiero que revises el sistema como se conecta este.

Bueno aquí están los cambios:
1- Coloque un archivo INI. (DBD.ini).
Si te fijas esta en la misma carpeta, abrelo y veras esto:

[BD]
Path="C:\Program Files\Borland\Delphi6\Projects\tunos nuevo\Copy of Turnos\Grupo Creativo.MDB"
[Logon]
Auto="No"
Login=""
Pass=""

Como ves en Path esta la direccion donde esta la base de datos.
Esto quiere decir que si colocas la base de datos en otra direccion y modificas este archivo y lo guardas, el programa buscara la base de datos en esa direccion.
Ten presente que este archivo (DBD.ini) tiene que estar en el mismo directorio que el programa.

2- Coloque un Datamodule con un adoConnection.
Este es el que contiene la direccion de la bd, es lo mismo que hacías con cada adoquery y adotable, solo que ahora es uno solo.

3- Cambie la entrada de los form, en projects, options, veras que estan en un lado de la lista.
Eso hace que no arranquen con el programa gastando memoria en vano.
Para hacer esto cada form es llamado y destruido cuando no se usa.

4- El form Turnos, ahora solo sirve para establecer los turnos.
veras dos botones mas:
Revisar Turnos:
Este es el form nuevo, entra con los turnos de la fecha que esta en el datetimepicker (si cambias la fecha, mostrara los de esa fecha), una vez dentro, se puede hacer busqueda, por fecha, por usuario, etc, etc.
Me parece logico ya que puede que algun cliente tenga mas de un servicio, asi se desglosan todos los servicios, horas, etc.
Tambien cada empleado podra ver sus servicios, por hora, fecha, cliente, que se yo.
Modificar turnos:
Bueno, es lo que hace, pero se modifica por fecha, osea que el entrara en la fecha que este el datetimepicker del form turnos.
Se podra, editar, borrar, guardar. etc.

5- Modifique algunas cosas del form Nuevo turno.
Estaba creando un conflicto con las fechas de la bd.

6- Use mas adoquery, esto agiliza el programa.

Bueno, por ahora creo que tienes para un rato.:D
Saludos

TURBOIGOR 15-12-2008 21:15:25

1 Archivos Adjunto(s)
gracias caral la verdad q estoy viendo muchas cosas nuevas para mi nivel de conocimiento de delphi. Lo estoy probando pero m tira un error q t lo adjunto para q veas.

TURBOIGOR 15-12-2008 21:18:49

se podria hacer q los turnos keden grabados en el dbgrid? y hacer la revision d turnos en esa pantalla?...pq por ejemplo si marco 2 veces la misma celda..m deja guadar 2 turnos en la misma fecha y mismo horario...y en el modificar seria bueno tambien poder cambiar la fecha....t agraderia mucho si m podes ayudar con eso, igualment este programa m servira muchisimoo:D

Caral 15-12-2008 21:20:26

Hola
Vi el error.
Hay un conflicto entre el stringgrid y el el formulario.
Esto pasa cuando la techa esta en azul, no se por que.
Lo que pense es en no dejarlas en azul, o no tocar el stringgird cuando se llame al form, el asunto es que la tabla no esta seguro cerrada.
Ya pensare en esto.
Por ahora, revisalo.
Saludos

Caral 15-12-2008 21:23:05

Hola
Para que eso no pase (cosa que no me dijiste) lo que se tendria que hacer es adjuntar un adoquery, que revise, tanto la hecha, hora y persona, para que si coinciden, envie un mensaje.
Saludos

TURBOIGOR 15-12-2008 21:28:40

mira...yo para hacer esta peluqueria m base en una q baje d internet en esta pagina:

http://gdssistemas.com.ar/evaluacion...ria/index.html

si puedes baja a version de evaluacion y fijate en la parte de reservas

Caral 15-12-2008 23:28:56

Hola
Estoy viendo dos cosas.
Una ya la tengo, ya se pueden modificar los turnos, fecha y hora.
Estoy viendo lo de los turnos repetidos.
Me da algunos problemas estoy en eso.
Saludos

TURBOIGOR 15-12-2008 23:56:09

te agradezco todo lo q estas haciendo por mi

pudist bajar el programa d la pag q t pase?
se podra hacer q guarde los turnos en el stringgrid?
pudist solucionar el error q mostraba? :confused:

Caral 16-12-2008 02:49:45

Hola
Adelantos:
Ya se pueden ver los datos en el stringGrid como querias.
Con solo cambiar de fecha se presentan los datos.
Estoy trabajando en la confirmación de que no se dupliquen los turnos, me esta costando, eso de ser novato es un problema.
Paciencia.
Saludos


La franja horaria es GMT +2. Ahora son las 05:18:34.

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