Ver Mensaje Individual
  #8  
Antiguo 17-10-2007
Avatar de thelibmx
thelibmx thelibmx is offline
Miembro
 
Registrado: mar 2007
Posts: 515
Reputación: 20
thelibmx Va por buen camino
ok aqui hay un caso practico sencillito,igual y me pueden dar una mejor manera de optimizarlo o me pueden dar alguna sugerencia, veran tengo el siguiente codigo
Código Delphi [-]
 
procedure TFormquincena.Button3Click(Sender: TObject);
var
Count1,pos: integer;
text: string;
begin

//llenado de combo box de años de quincena
    Pos := ComBoxselectoranio.SelStart;
    ComBoxselectoranio.Items.Clear;
    Text := ComBoxselectoranio.Text;
formconecciones.Query_catalogo_quincenasmod.Close;
formconecciones.Query_catalogo_quincenasmod.SQL.Clear;
formconecciones.Query_catalogo_quincenasmod.SQL.Add('select distinct anio from catalogo_quincenas');
formconecciones.Query_catalogo_quincenasmod.ExecSQL;
formconecciones.Query_catalogo_quincenasmod.Open;
 Count1:=formconecciones.Query_catalogo_quincenasmod.RowsAffected;

    if Count1 > 0 then
     begin
      repeat Dec(Count1);
      ComBoxselectoranio.Items.Add(formconecciones.Query_catalogo_quincenasmod.FieldByName('anio').AsStrin  g);
       formconecciones.Query_catalogo_quincenasmod.Next;
      until Count1 = 0;
      ComBoxselectoranio.ItemIndex := 0;
      ComBoxselectoranio.SelStart := Pos;
      ComBoxselectoranio.SelLength := 255;
    end;
//llena combobox año  de quincena
 
end;
bien con ese codigo lo que hago esque lleno un combobox con los años que se encuentran en una tabla. Entonces al yo apretar un boton, pues trae todo los resultados y los mete al combobox, cuando yo corro mi programa en el evento form create se encuentra ese codigo, entonces se ejecuta y me llena el combo con los años que estan en ese momento en la tabla, digamos 1999,2000,2003, ok, ahora bien, tengo en un panel, con tedit, y desde ahi puedo insertar mas años en la tabla, digamos que 2004,2005,2006, como al crear el formulario se leyeron los que ya habia, ahora necesito que vuelva a ejecutar esa parte de codigo para que aparezcan los años agregados,entonces lo ideal creo yo seria meter esa parte de codigo en un proceso, para que cuando yo inicie la forma solo mande llamar ese proceso o cuando agregue un nuevo año, se mande a llamar el proceso, entonces lo que hago es esto
Código Delphi [-]
procedure llenadocombo();
var
Count1,pos: integer;
text: string;
comboxselectoranio:tcombobox;
begin
//llenado de combo box de años de quincena
    Pos := ComBoxselectoranio.SelStart;
    ComBoxselectoranio.Items.Clear;
    Text := ComBoxselectoranio.Text;
formconecciones.Query_catalogo_quincenasmod.Close;
formconecciones.Query_catalogo_quincenasmod.SQL.Clear;
formconecciones.Query_catalogo_quincenasmod.SQL.Add('select distinct anio from catalogo_quincenas');
formconecciones.Query_catalogo_quincenasmod.ExecSQL;
formconecciones.Query_catalogo_quincenasmod.Open;
 Count1:=formconecciones.Query_catalogo_quincenasmod.RowsAffected;
  showmessage(inttostr(count1));
    if Count1 > 0 then
     begin
      repeat Dec(Count1);
      ComBoxselectoranio.Items.Add(formconecciones.Query_catalogo_quincenasmod.FieldByName('anio').AsStrin  g);
       formconecciones.Query_catalogo_quincenasmod.Next;
      until Count1 = 0;
      ComBoxselectoranio.ItemIndex := 0;
      ComBoxselectoranio.SelStart := Pos;
      ComBoxselectoranio.SelLength := 255;
    end;
//llena combobox año  de quincena
end;
y pues para mandarlo llamar seria algo asi
Código Delphi [-]
procedure TFormquincena.FormCreate(Sender: TObject);
begin
llenadocombo();
end;
o si se tratara de un boton seria algo asi
Código Delphi [-]
procedure TFormquincena.Button4Click(Sender: TObject);
begin
llenadocombo();
end;

pero asi me manda un error de acces violation at adress 004ebc55 in modulo' modulo' .Read of adress 5s0000, cada ves que mando a llamar el procedimiento por medio del boton, o por el evento form create y asi me ha pasado con otros codigos que he querido intentar encapsular, se q algo estoy haciendo mal, tenganme mucha paciencia, no se desesperen se que es una tonteria, tal ves error de sintaxys o algo que no he declarado no se, enseñenme la luz jejeje gracias por su atencion
__________________
En movimiento...
Responder Con Cita