Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-12-2008
deprimera deprimera is offline
Miembro
 
Registrado: jul 2008
Posts: 26
Poder: 0
deprimera Va por buen camino
Perdon que te siga jodiendo, por ahora me estas ayudando bastante pero me surge un nuevo interrogante. Si yo escribo cosas en el stringrid y dsp cliqueo en otra fecha, necesitaria que me guarde todo en la base de datos y me blanquee el stringgrid. si vuelvo a la fecha anterior necesitaria que me cargue todo lo que habia guardado anteriormene.

como mas o menos tendria que hacer la consulta. lo guardaria por fecha.

saludos
Responder Con Cita
  #2  
Antiguo 03-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Hace algún tiempo, en una galaxia lejana, el Maestro Lepe hizo un Calendario dinámico.
Este Humilde Novato le hizo algun retoque (corte de pelo y lavado con Shampu).
Tiene una tabla enlazada (access), guarda los datos, etc.
Tal vez te pueda servir para tomar idea.
Aqui esta.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 03-12-2008
deprimera deprimera is offline
Miembro
 
Registrado: jul 2008
Posts: 26
Poder: 0
deprimera Va por buen camino
Gracias caral. Muchas veces me ayudaste en muchas cosas, pero en este caso No. Este calendario hecho por Lepe no me sirve. no es lo que busco hacer.
YO necesito que al escribir cosas en el stringrid y dsp cliqueo en otra fecha, necesitaria que me guarde todo en la base de datos y me blanquee el stringgrid. si vuelvo a la fecha anterior necesitaria que me cargue todo lo que habia guardado anteriormene.
Responder Con Cita
  #4  
Antiguo 03-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno, el intento se hace.
Lo que pides es relativamente sencillo, lo que no se es por que un stringGrid y no un dbgrid?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 03-12-2008
deprimera deprimera is offline
Miembro
 
Registrado: jul 2008
Posts: 26
Poder: 0
deprimera Va por buen camino
Caral, te explico lo que por ahora tengo. tengo una base de datos llamada estilistas con el nombre de los mismos. Puse un stringgrid pq hago una consulta en la cual pido los nombre de los estilistas para ponerlos en la cabecera del stringrid. El horario de los turnos (que va de las 10 a 19.30) van en las celdas de la primer columna. es por eso que uso stringgrid, uso la cabecera de las columnas para los nombres de los estilistas y las celdas de la primer columna para poner el horario.

saludos
Responder Con Cita
  #6  
Antiguo 03-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Hace algún tiempo, en una galaxia lejana, el Maestro Lepe hizo un Calendario dinámico.
Este Humilde Novato le hizo algun retoque (corte de pelo y lavado con Shampu).
Tiene una tabla enlazada (access), guarda los datos, etc.
Tal vez te pueda servir para tomar idea.
Aqui esta.
Saludos
...

Cita:
Empezado por deprimera Ver Mensaje
Gracias caral. Muchas veces me ayudaste en muchas cosas, pero en este caso No. Este calendario hecho por Lepe no me sirve. no es lo que busco hacer.
YO necesito que al escribir cosas en el stringrid y dsp cliqueo en otra fecha, necesitaria que me guarde todo en la base de datos y me blanquee el stringgrid. si vuelvo a la fecha anterior necesitaria que me cargue todo lo que habia guardado anteriormene.
... te falto la manicura Caral

Que hice yo... simple, asocié cada registro de las citas con una fecha y una posicon F - C (Fila, Columna), cuando cambiaba la fecha... solo consultaba esos dos campos para ubicar en donde que debia pintar, al hacer click en la grilla solo era otra consulta para traer el resto de datos de la cita en otro formulario... mas o menos es la idea que te doy, es cuestión de que la acomodes a tu necesidad
Responder Con Cita
  #7  
Antiguo 03-12-2008
deprimera deprimera is offline
Miembro
 
Registrado: jul 2008
Posts: 26
Poder: 0
deprimera Va por buen camino
Me podrias pasar algun codigo aproximado para orientarme un poco mas?? Perdon que sea tan jodon.

Gracias!
Responder Con Cita
  #8  
Antiguo 03-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
En el momento no tengo un código como quieres... solo recuerdo como lo hice, aunque no se si fuese la mejor manera .

Como te digo, podrias hacer un query al cambiar de fecha que te consulte todas las citas en la misma y retornar los campos F y C, luego en una rutina ubicar esta celda y cambiarle el color por ejemplo, si el usuario da click en ella; pues será otra consulta, esta vez buscando las coincidencias en la fecha y los campos F C, evita resultados ambiguos... (me imagino que buscaras la forma de mostrar siempre el resultado adecuado), depues de esto en el otro formulario deberias tener desde la consulta el detalle completo de la cita... recuerda que es la idea la que te aporto.
Responder Con Cita
  #9  
Antiguo 03-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno ten en cuenta que este codigo es de un novato, asi que no critiques mucho, solo te lo pongo de ejemplo.
Esta es una parte que uso en un sistema de facturacion con stringrid.
Código Delphi [-]
procedure TFFactura.RJustifyEdit(var ThisEdit : TEdit);
var
   Left, Width : Integer;
   GString : String;
   Rgn : TRect;
   TheCanvas : TControlCanvas;
begin
   TheCanvas := TControlCanvas.Create;
   try
      TheCanvas.Control := ThisEdit;
      GString := ThisEdit.Text;
      Rgn := ThisEdit.ClientRect;
      TheCanvas.FillRect(Rgn);
      Width := TheCanvas.TextWidth(GString);
      Left := Rgn.Right - Width - 1;
      TheCanvas.TextRect(Rgn, Left, 0, GString);
   finally
      TheCanvas.Free;
   end;
end;

Procedure GridRemoveRow(StrGrid: TStringGrid; DelRow: Integer);
Var Row: Integer;
begin
  If DelRow <= StrGrid.RowCount then
  Begin
    If (DelRow = StrGrid.RowCount-1) AND (DelRow = 1) then
    begin
       StrGrid.Rows[DelRow].Clear;
       StrGrid.Cells[3,1] := '0';
       StrGrid.Cells[4,1] := '0.00';
       StrGrid.Cells[5,1] := '0.00';
    end
    else if DelRow = StrGrid.RowCount - 1 then StrGrid.RowCount := StrGrid.RowCount-1
         else
         begin
            For Row := DelRow To StrGrid.RowCount-2 do
               StrGrid.Rows[Row].Assign(StrGrid.Rows[Row+1]);
            StrGrid.RowCount := StrGrid.RowCount-1;
         end;
  End;
end;

procedure TFFactura.CalculaTotales;
var i:integer;
begin
 //Calcula los totales de la factura
   SubTotal := 0;
   Impuesto := 0;
   Desc     := 0;
   Total    := 0;
   // Calcula el SubTotal
   For i:=1 to SGFact.RowCount-1 do
      SubTotal := SubTotal + StrToFloat(SGFact.Cells[5,i]);
   // Calcula el monto para cobrar el impuesto de ventas

   For i:=1 to SGFact.RowCount-1 do
      If SGFact.Cells[6,i] = 'Si' then Impuesto :=  Impuesto + StrToFloat(SGFact.Cells[5,i]);

   SubTotal := Round(SubTotal);
   Desc := (SubTotal * FLEPorcDesc.Value / 100);
   Desc := Round(Desc);
   Impuesto := (Impuesto * 0.13);
   Impuesto := Round(Impuesto);
   Total := (SubTotal - Desc + Impuesto);
   // escribe los valores en las celdas
   SGTotal.Cells[1,1] := Format('%8.2n',[desc]);
   SGTotal.Cells[1,2] := Format('%8.2n',[Impuesto]);
   SGTotal.Cells[1,0] := Format('%8.2n',[SubTotal]);
   SGTotal.Cells[1,3] := Format('%8.2n',[Total]);
 end;
Esta es otra:
Código Delphi [-]
procedure TFFactura.BitBtn2Click(Sender: TObject);
var i : integer;
begin
// ************ Boton de Agregar **************
   FSelProdFact:=TFSelProdFact.Create(self);
   FSelProdFact.Precio := Label15.Caption;
 // Filtra las series que ya estan en la factura
   If (SGFact.RowCount = 2) AND (SGFact.Cells[2,1] = '') then FSelProdFact.Filtro := ''
   else
   begin
      FSelProdFact.Filtro := 'NumSerie <> '+ SGFact.Cells[2,1];
      i:=2;
      While i < SGFact.RowCount do
      begin
         FSelProdFact.Filtro := FSelProdFact.Filtro + ' AND NumSerie <> '+SGFact.Cells[2,i];
         i:=i+1;
      end;
   end;
   try
      FSelProdFact.ShowModal;
   finally
      If FSelProdFact.Cancela = False then
      Begin
         If Cuenta > 1 then SGFact.RowCount := SGFact.RowCount + 1;
         QTemp.Close;
         QTemp.SQL.Text := 'SELECT Descripcion+" "+Categoria+" "+SubCategoria AS Descr, Precio1 FROM Articulos '+
                           'WHERE CodParte = '+QuotedStr(FSelProdFact.Edit1.Text);
         QTemp.Open;
         SGFact.Cells[0,cuenta] := FSelProdFact.Edit1.Text;
         SGFact.Cells[1,cuenta] := QTemp.Fields[0].AsString;
         SGFact.Cells[2,cuenta] := FSelProdFact.Edit2.Text;
         SGFact.Cells[3,cuenta] := FSelProdFact.Edit3.Text;
         SGFact.Cells[4,cuenta] := Format('%8.2f',[FSelProdFact.FloatEdit1.Value]);
         SGFact.Cells[5,cuenta] := Format('%8.2f',[FSelProdFact.FloatEdit1.Value * StrToFloat(SGFact.Cells[3,cuenta])]);
         If FSelProdFact.CBIV.Checked then SGFact.Cells[6,cuenta] := 'Si' else SGFact.Cells[6,cuenta] := 'No';
         Cuenta := Cuenta +1;
         QTemp.Close;
         SortGrid(SGFact,0,0);
         CalculaTotales;
      end;
      FSelProdFact.Free;
   end;
end;

procedure TFFactura.SGFactDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
Var
   X:Integer;
begin
   x:=0;
   With Sender As TStringGrid do begin
   Case Acol of
   0: Begin
      SetTextAlign(Canvas.Handle,TA_LEFT);
      X:= rect.left+5;
      end;
   1: Begin
      SetTextAlign(Canvas.Handle,TA_LEFT);
      X:= rect.left+5;
      end;
   2: Begin
      SetTextAlign(Canvas.Handle,TA_LEFT);
      X:= rect.left+5;
      end;
   3: Begin
      SetTextAlign(Canvas.Handle,TA_CENTER);
      X:=(rect.right+rect.left) div 2;
      end;
   4: Begin
      SetTextAlign(Canvas.Handle,TA_RIGHT);
      X:= rect.right-5;
      end;
   5: Begin
      SetTextAlign(Canvas.Handle,TA_RIGHT);
      X:= rect.right-5;
      end;
   6: Begin
      SetTextAlign(Canvas.Handle,TA_CENTER);
      X:=(rect.right+rect.left) div 2;
      end;
   END;{CASE}
   if Arow=0 then
   begin
      SetTextAlign(Canvas.Handle,TA_CENTER);
      X:=(rect.right+rect.left) div 2;
   end;
   Canvas.textrect(rect,X,rect.top+2,Cells[Acol,Arow]);
   end;{with}
end;
No te pongo todo por que es un poco extenso, pero mas o menos obtendrás una idea de esto.
Saludos
__________________
Siempre Novato
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


La franja horaria es GMT +2. Ahora son las 09:41:56.


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