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 29-09-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola DOS.

La verdad, me falta información para poder darte una respuesta a tu anteúltimo mensaje. Asì que te hago unas consultas:
  • ¿ cbHoras y cbMinutos son dos TComboBox donde se elijen horas y minutos respectivamente ?
  • ¿ Que función desempeñan ComboBox3 y ComboBox2 ?
  • ¿ De que tipo es el campo Hora de Table1 ?

Saludos
En realidad cbHoras y cbMinutos son dos variables que se le asignan los datos de los combobox seleccionados.
En el ComboBox3 se muestran las horas de 8 a 18 y en el ComboBox2 los minutos de a 10 (10, 20, 30, 40, 50, 00)
el campo Hora es del tipo datatime.
Lo que pasa es que fui modificando a medida que me aconsejabas y tal vez borre algo o hice algo de mas o menos asi que tambien pongo el codigo, lo cambie tantas veces tratando de que funcione que ya me perdi.

variables generales:
Código Delphi [-]
var
  Form20: TForm20;
  c,h1,m1,s:integer;
 h,m:string;
 tiempo : TDateTime;
 cbHoras, cbMinutos: TComboBox;

Funcion
Código Delphi [-]
function hmToDateTime(cbH, cbM: TComboBox): TDateTime;
begin
  if (cbH.ItemIndex = -1)or(cbM.ItemIndex = -1) then
    raise Exception.Create('Debe ingresar horas y minutos');
  Result := EncodeTime(StrToInt(cbH.Items[cbH.ItemIndex]),
    StrToInt(cbM.Items[cbM.ItemIndex]), 0, 0);
end;

boton de nuevo:
Código Delphi [-]
 // nuevo turno
procedure TForm20.BitBtn6Click(Sender: TObject);
begin
DBEdit4.SetFocus;
Table1.Open;
  Table1.Last;
    c:=Table1.FieldByName('Cod_turnovet').Asinteger;
    c:=c+1;
    Table1.insert;
    table1.edit;
    BitBtn6.Enabled:=False;
    BitBtn3.Enabled:=false;
    BitBtn2.Enabled:=true;
    BitBtn4.Enabled:=true;
    DBEdit2.Visible:=false;
    DBEdit3.Visible:=false;
    DateTimePicker1.Visible:=true;
end;

boton de guardar nuevo:
Código Delphi [-]
  // guarda turno
procedure TForm20.BitBtn4Click(Sender: TObject);
begin
table1.Last;
cbHoras := ComboBox3;// como esta funcionando ahora
cbMinutos := ComboBox2;
//cbHoras.Items.Assign(comboBox2.Items);
//cbMinutos.Items.Assign(ComboBox3.Items);
 DBEdit4.SetFocus;
  // Table1.Append;
 // table1.FieldByName('Cod_turnovet').AsInteger:=c;
 if table2.FieldByName('Cod_prop').AsInteger=Table3.FieldByName('Cod_prop').AsInteger
  then
  Table1.Append;
  table1.FieldByName('Cod_turnovet').AsInteger:=c;
  Table1.FieldByName('Hora').Value := hmToDateTime(cbHoras, cbMinutos);
  table1.FieldByName('Cod_propi').AsInteger:=Table3.FieldByName('Cod_prop').AsInteger;
  table1.Post;
  BitBtn5.Enabled:=True;
  BitBtn6.Enabled:=True;
  BitBtn4.Enabled:=false;
  BitBtn3.Enabled:=True;
  DateTimePicker1.Visible:=false;
DBEdit2.Visible:=true;
DBEdit3.Visible:=true;
end;

Espero que te aclare un poco mas y puedas ver que esta mal, muchas gracias.
Responder Con Cita
  #2  
Antiguo 29-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola DOS.

Supongamos que las horas y los minutos se seleccionan desde dos TComboBox, llamados ComboBoxHoras y ComboBoxMinutos respectivamente.

La conversión y posterior asignación al campo "Hora" de "Table1" debería ser:
Código Delphi [-]
...
var
  h,m: Word;
begin
  // Si hay horas y minutos seleccionados...
  if (ComboBoxHoras.ItemIndex <> -1) and (ComboBoxMinutos.ItemIndex <> -1)  then
  begin
    Table1.Append;  // Agregar
    ...
    Table1.FieldByName('Hora').AsDateTime := EncodeTime(
      StrToInt(ComboBoxHoras.Items[ComboBoxHoras.ItemIndex]),     // Horas
      StrToInt(ComboBoxMinutos.Items[ComboBoxMinutos.ItemIndex]), //Minutos
      0, 0); // Segundos, ms
    ...
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 29-09-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Hola, sigue habiendo un error al grabar los datos, le realice algunas modificaciones, las variables h y m no se utilizan y los combobox son ComboBoxHoras = ComboBox3 y ComboBoxMinutos = ComboBox2(ya se que es mas claro como tu lo escribiste)
Código Delphi [-]
  // guarda turno
procedure TForm20.BitBtn4Click(Sender: TObject);
begin
  // Si hay horas y minutos seleccionados...
  if (ComboBox3.ItemIndex <> -1) and (ComboBox2.ItemIndex <> -1)  then
  begin
    Table1.Append;  // Agregar
    table1.FieldByName('Cod_turnovet').AsInteger:=c;
    table1.FieldByName('Cod_propi').AsInteger:=Table3.FieldByName('Cod_prop').AsInteger;
    Table1.FieldByName('Hora').AsDateTime := EncodeTime(
      StrToInt(ComboBox3.Items[ComboBox3.ItemIndex]),     // Horas
      StrToInt(ComboBox2.Items[ComboBox2.ItemIndex]), //Minutos
      0, 0); // Segundos, ms
     table1.Post;
        BitBtn5.Enabled:=True;
        BitBtn6.Enabled:=True;
        BitBtn4.Enabled:=false;
        BitBtn3.Enabled:=True;
        DateTimePicker1.Visible:=false;
        DBEdit2.Visible:=true;
        DBEdit3.Visible:=true;
   end;
end;

Queda de la siguiente manera cuando cargo los datos y le doy guardar en el boton, se ve asi en el DBGrid y si realizo una nueva cargaobviamente me da un error de violation key, dado que esto se esta complicando mucho y no se llega a una solucion, ¿tu crees que seria mas facil si al campo Horas, lo paso como string o integer en ves de datatime?

que puede ser?
Responder Con Cita
  #4  
Antiguo 29-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por DOS Ver Mensaje
... si realizo una nueva cargaobviamente me da un error de violation key,...
Hola DOS.

Ese error no tiene que ver con la asignación del campo "Hora" en sí. Lo que está indicando, es que estas ingresando un valor en el campo determinado como clave primaria que ya existe en otro registro de Table1.

¿ Como se llama ese campo y que valor le asignas antes de guardar el registro ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 30-09-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
La clave principal Cod_turnovet, el problema es que no se porque no se muestra todo en una sola linea, por eso adjunté la imagen, fijate como vienen en el DBGrid el 1, 2, 3... y el 6 que es el que grabo, pone los datos por separado en dos linea distintas.
Al quedar una linea sin el numero de la clave principal al crea un nuevo ingreso es logico que tire ese error. gracias.
Responder Con Cita
  #6  
Antiguo 30-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola DOS.

Sin dudas el problema se encuentra en el valor que contiene la variable "c" al momento de la asignación:
Código Delphi [-]
  ...
  Table1.FieldByName('Cod_turnovet').AsInteger := c;
  ...
Sería mas conveniente que definieras la clave "Cod_turnovet" como autoincremental, de ese modo no tendrías que preocuparte por su valor.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 04-10-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
ecfisa, ya lo solucione estaba de mas Table1.Append; asi que quedo asi:
Código Delphi [-]
  // guarda turno
procedure TForm20.BitBtn4Click(Sender: TObject);
begin
  // Si hay horas y minutos seleccionados...
  if (ComboBox3.ItemIndex <> -1) and (ComboBox2.ItemIndex <> -1)  then
  begin
    table1.FieldByName('Cod_turnovet').AsInteger:=c;
    table1.FieldByName('Cod_propi').AsInteger:=Table3.FieldByName('Cod_prop').AsInteger;
    Table1.FieldByName('Hora').AsDateTime := EncodeTime(
      StrToInt(ComboBox3.Items[ComboBox3.ItemIndex]),     // Horas
      StrToInt(ComboBox2.Items[ComboBox2.ItemIndex]), //Minutos
      0, 0); // Segundos, ms
     table1.Post;
        BitBtn5.Enabled:=True;
        BitBtn6.Enabled:=True;
        BitBtn4.Enabled:=false;
        BitBtn3.Enabled:=True;
        DateTimePicker1.Visible:=false;
        DBEdit2.Visible:=true;
        end
        else // si no ingresa horas o minutos
          ShowMessage('Debe ingresar horas y minutos');
end;
ahora ecfisa, abusando de tu conocimiento, estaria bueno poder restringir si el veterinario ya tiene un turno reservado, que no pueda elegir el mismo, entoces deberia restringir al veterinario y a las horas y minutos, crees que me puedas ayudar con eso, ya que no veo otro que lo haga o abro un nuevo trhead, desde ya muchas gracias por todo.
Creo que deberia hacer un if anidado, primero restringiendo al veterinario luego la hora y los minutos, crees que funcionaria asi?
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
Asignar el valor de una variable de php a una variable js que puede no existir jandroruiz PHP 5 04-03-2013 12:23:02
Asignar resultado de consulta a variable Saiyan SQL 3 10-07-2007 15:44:10
asignar el resultado de un sql a una variable Cañones SQL 2 14-04-2007 15:29:43
Asignar el valor de DayOfTheWeek a una variable gluglu Varios 7 23-01-2005 19:47:47
Asignar valor ComboBox a una variable gluglu Varios 6 11-10-2004 17:54:44


La franja horaria es GMT +2. Ahora son las 12:43:59.


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