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 15-09-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Asignar 2 combobox a una variable

Hola a todos, resulta que tengo dos combobox en uno tengo lo que serian algunas horas y en otro algunos minutos, cada uno lo guardo en una variable h, m, para ello creo un procedimiento
Código Delphi [-]
procedure TForm20.horaminutos; //procedimiento para sumar la hora y los minutos
 var
 h,m :string;
 begin
 h:=ComboBox3.Text;
 m:=ComboBox2.Text;
end;
por supuesto que esta incompleto
entonces el usuario selecciona la hora y los minutos y una serie de datos, cuando le da al boton guardar, llama al procedimiento y deberia quedar ej.: 18:20, esto se guardaria en una tabla dentro del campo hora del tipo Time.
Estoy desorientado en como asignar esas dos variables al campo, agradesco que me ayuden.

Última edición por DOS fecha: 15-09-2013 a las 22:53:10.
Responder Con Cita
  #2  
Antiguo 16-09-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Estuve realizando algunos cambios.
Código Delphi [-]
function EncodeTime( Hour, Min: Word ): TDateTime; // es necesario poner segundos?
begin
Tiempo:=EncodeTime( h1, m1 );
end; 

procedure TForm20.horaminutos; //procedimiento para sumar la hora y los minutos
 begin
 h:=ComboBox3.Text;
 m:=ComboBox2.Text;
  h1:=strToInt(h);
  m1:=StrToInt(m);
end;

este es el boton de guardar
Código Delphi [-]
  // guarda turno
procedure TForm20.BitBtn4Click(Sender: TObject);
begin
horaminutos; // llama al procedimiento
DBEdit4.SetFocus;
  table1.FieldByName('Cod_turnovet').AsInteger:=c;
  if table2.FieldByName('Cod_prop').AsInteger=Table3.FieldByName('Cod_prop').AsInteger
  then
  table1.FieldByName('Cod_propi').AsInteger:=Table3.FieldByName('Cod_prop').AsInteger;
  Table1Hora.AsDateTime:=tiempo;
  table1.Post;
end;
El asunto que cuando corre la hora queda en 00:00:00
Responder Con Cita
  #3  
Antiguo 16-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.

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;

Uso:
Código Delphi [-]
begin
  Table1.Append;
  Table1.FieldByName('Hora').Value := hmToDateTime(cbHoras, cbMinutos);
  ...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 18-09-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Muchas gracias ecfisa, lo estuve probando y me tira un error "control has no parent window"
esta es la codificación como quedo a ver si tu te das cuenta de que esta mal, gracias.
Código Delphi [-]
  // guarda turno
procedure TForm20.BitBtn4Click(Sender: TObject);
var
cbHoras, cbMinutos: TComboBox;

begin
  cbHoras:=TComboBox.Create(Application);// inicializo la variable
  cbMinutos:=TComboBox.Create(Application);
DBEdit4.SetFocus;
  table1.FieldByName('Cod_turnovet').AsInteger:=c;
  if table2.FieldByName('Cod_prop').AsInteger=Table3.FieldByName('Cod_prop').AsInteger
  then
  Table1.Append;
  Table1.FieldByName('Hora').Value := hmToDateTime(cbHoras, cbMinutos);
  table1.FieldByName('Cod_propi').AsInteger:=Table3.FieldByName('Cod_prop').AsInteger;
  table1.Post;

end;

la función
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;
Responder Con Cita
  #5  
Antiguo 18-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.
Cita:
lo estuve probando y me tira un error "control has no parent window"
Como indica el mensaje de error, debes asignarle un parent a los controles creados, ejemplo:
Código Delphi [-]
procedure TForm1.BitBtn4Click(Sender: TObject);
var
  cbHoras, cbMinutos: TComboBox;
begin
  cbHoras  := TComboBox.Create(Self);
  cbMinutos:= TComboBox.Create(Self);
  with cbHoras do
  begin
    Left := 10;
    Top  := 10;
   //...
    Parent := Self;
  end;
  with cbMinutos do
  begin
    Left := 10;
    Top  := 50;
    //...
    Parent := Self;
  end;
  //...
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 20-09-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Perdona ecfisa mi ignorancia y mi pesades, pero no entiendo, lo que tu pones parece como que quieres crear los combobox, pero ya estan en el form, son dos uno para las horas de 8 a 18 combobox3 y otro para los minutos de 0 a 50 cada 10 minutos combobox2, a ver si me puedes guiar un poco mas, muchas gracias.
Código Delphi [-]
  // guarda turno
procedure TForm20.BitBtn4Click(Sender: TObject);
var
cbHoras, cbMinutos: TComboBox;

begin
  cbHoras:=TComboBox.Create(Self);// deberia ser combobox3 y 2?
  cbMinutos:=TComboBox.Create(Self);
   with cbHoras do
  begin
    Left := 10;
    Top  := 10;
   //...  aca iria el resto de las especificaciones del combobox?
    Parent := Self;
  end;
  with cbMinutos do
  begin
    Left := 10;
    Top  := 50;
    //...
    Parent := Self;
  end;
DBEdit4.SetFocus;
  table1.FieldByName('Cod_turnovet').AsInteger:=c;
  if table2.FieldByName('Cod_prop').AsInteger=Table3.FieldByName('Cod_prop').AsInteger
  then
  Table1.Append;
  Table1.FieldByName('Hora').Value := hmToDateTime(cbHoras, cbMinutos);
  table1.FieldByName('Cod_propi').AsInteger:=Table3.FieldByName('Cod_prop').AsInteger;
  table1.Post;
 end;
Responder Con Cita
  #7  
Antiguo 20-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.
Cita:
Empezado por DOS Ver Mensaje
lo que tu pones parece como que quieres crear los combobox,
Así es. Y esa idea la inferí basándome en el código de tu mensaje #4:
Cita:
Empezado por DOS Ver Mensaje
...lo estuve probando y me tira un error "control has no parent window"
esta es la codificación como quedo a ver si tu te das cuenta de que esta mal, gracias.
Código Delphi [-]
  // guarda turno
procedure TForm20.BitBtn4Click(Sender: TObject);
var
cbHoras, cbMinutos: TComboBox;

begin
  cbHoras:=TComboBox.Create(Application);// inicializo la variable
  cbMinutos:=TComboBox.Create(Application);
  DBEdit4.SetFocus;
  table1.FieldByName('Cod_turnovet').AsInteger:=c;
  if table2.FieldByName('Cod_prop').AsInteger=Table3.FieldByName('Cod_prop').AsInteger
  then
  Table1.Append;
  Table1.FieldByName('Hora').Value := hmToDateTime(cbHoras, cbMinutos);
  table1.FieldByName('Cod_propi').AsInteger:=Table3.FieldByName('Cod_prop').AsInteger;
  table1.Post;

end;
Si agregaste los combos en tiempo de diseño no es necesario invocar a su constructor...

Por otro lado y por el comentario en tu código ("inicializo la variable"), veo que tenes una confusión entre la variable del objeto y sus propiedades.

Si el objeto ya esta creado (y lo está ya que fue echo en tiempo de diseño), lo que sigue es asignarle valores a la/las propiedades de la instancia de el/los TComboBox.
Con los combos creados en diseño y tu código estás eliminando el Parent previo, un ejemplo para que compruebes lo que estoy diciendo:
Código Delphi [-]
procedure TForm20.BitBtn4Click(Sender: TObject);
begin
  ShowMessage('Soy cbHoras, mi padre es: ' + cbHoras.Parent.Name);
  cbHoras := TComboBox.Create(Application);
  if cbHoras.HasParent then
    ShowMessage('No es posible, ¡ Mi padre es inmortal !'
  else
    ShowMessage('Ahora soy huérfano, acaban de matar a mi padre...');
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 20-09-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
ecfisa, si bien no entiendo mucho, creo que estoy mas cerca, pero mira lo que pasa.



Código Delphi [-]
  // guarda turno
procedure TForm20.BitBtn4Click(Sender: TObject);
var
cbHoras, cbMinutos: TComboBox;
begin
cbHoras := ComboBox3;
cbMinutos := ComboBox2;
 DBEdit4.SetFocus;
  table1.FieldByName('Cod_turnovet').AsInteger:=c;
  if table2.FieldByName('Cod_prop').AsInteger=Table3.FieldByName('Cod_prop').AsInteger
  then
  Table1.Append;
  Table1.FieldByName('Hora').Value := hmToDateTime(cbHoras, cbMinutos);
  table1.FieldByName('Cod_propi').AsInteger:=Table3.FieldByName('Cod_prop').AsInteger;
  table1.Post;
end;

No deberia funcionar bien? (obvio que no)
Responder Con Cita
  #9  
Antiguo 20-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.

No termino de entender la relación del gráfico con el código.

Pero volvamos a los ComboBox, ahora aparecen en escena dos nuevos ComboBox2 y ComboBox3, que supongo también están creados en tiempo de diseño.

El siguiente código no debería existir:
Código Delphi [-]
procedure TForm20.BitBtn4Click(Sender: TObject);
var cbHoras, cbMinutos: TComboBox;  (*   ¡ Esto no corresponde !  *)
begin
   ...
Al declarar cbHoras y cbMinutos como variables locales al método BitBtn4Click, este trabajará sobre estas y no sobre las homónimas creadas en tiempo de diseño. Provocando de ese modo una excepción ya que las locales no han sido instanciadas.

Por otro lado, la asignación de los combos debería hacerse:
Código Delphi [-]
procedure TForm20.BitBtn4Click(Sender: TObject);
begin
  cbHoras.Items.Assign(ComboBox2.Items);
  cbMinutos.Items.Assign(ComboBox3.Items);
  ...
Eso independientemente del buen o mal funcionamiento que pudiera tener el código que lo sucede.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 22-09-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Gracias ecfisa, ya eliminie la parte del codigo que estaba mal, pero de que tipo deben ser las variables, las declaro del tipo global, pero si pongo string o integer me dice que no es compatible con el comboBox corre solo si pongo que son del tipo TcomboBox, el codigo queda asi
Código Delphi [-]
  // guarda turno
procedure TForm20.BitBtn4Click(Sender: TObject);
begin
cbHoras := ComboBox3.Text;
cbMinutos := ComboBox2.Text;
//cbHoras.Items.Assign(comboBox2.Items); //no funciona
//cbMinutos.Items.Assign(ComboBox3.Items);//[Error] Unit20.pas(226): Record, object or class type required
 DBEdit4.SetFocus;
  table1.FieldByName('Cod_turnovet').AsInteger:=c;
  if table2.FieldByName('Cod_prop').AsInteger=Table3.FieldByName('Cod_prop').AsInteger
  then
  Table1.Append;
  Table1.FieldByName('Hora').Value := hmToDateTime(cbHoras, cbMinutos);
  table1.FieldByName('Cod_propi').AsInteger:=Table3.FieldByName('Cod_prop').AsInteger;
  table1.Post;
end;
El asunto que cuando cargo todos los datos y le doy click al boton de guardar, me queda como en la imagen , el del codigo de turno 10000006 , quedan todos los datos pero la hora queda en otra linea sola, por eso lo remarque con una flecha.
Si lo cargo asignando como tu lo escribiste, se cuelga tirando un error Access violation at Addres 0053a434 in module 'Project1.exe'... declarando las variables del tipo Tcombobox y si las declaro del tipo string o integer no anda y aparece el error que se muestra arriba.
creo que esta cerca de la solucion, falta un ultimo pasito, muchas gracias por tu paciencia.
Responder Con Cita
  #11  
Antiguo 28-09-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
ecfisa, todavia no lo pude resolver
Responder Con Cita
  #12  
Antiguo 28-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.

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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #13  
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
  #14  
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
  #15  
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
  #16  
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
  #17  
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
  #18  
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
  #19  
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 01:40:48.


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