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 09-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Comparar datos, numeros

Hola a todos
Os explico:
Tengo dos forms
en uno tengo un stringrid, en el otro tengo un edit.
coloco un dato en el edit y este se coloca en una celda del stringrid
por cada dato se va colocando en la celda de abajo del stringrid.
El asunto:
Quiero saber si el numero que se va a poner en el stringrid ya esta (osea esta repetido), si es asi que lo indique y no lo ponga.
Para esto me imagino que hay que hacer un recorrido de las columnas del stringrid y compararlo con el edit.

Hice esto pero me indica que esta repetido si es el primer dato, despues se lo salta:
Código Delphi [-]
 if  SGFact.Cells[2,SGFact.Row] = FSelProdFact.Edit2.Text then
 begin
 Valor:=SGFact.Cells[2,SGFact.Row]
 ShowMessage(Valor);   
 end;

Como veréis no he podido.
Me ayudáis, por favor.
Gracias
Saludos
__________________
Siempre Novato
Responder Con Cita
  #2  
Antiguo 09-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Has mirado usando el debug y deteniendo el programa (breakpoint) para ver qué valores tienen?
Responder Con Cita
  #3  
Antiguo 09-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No amigo, no sabria como hacerlo, pero el programa no da errores, es simplemente hacer una comparacion de los numeros que tienen las celdas con el del edit.
Gracias.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #4  
Antiguo 09-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pones un breakpoint (punto de ruptura) en la línea:
Código Delphi [-]
if  SGFact.Cells[2,SGFact.Row] = FSelProdFact.Edit2.Text then
Ejecutas el programa y se detendrá ahí. Con el ratón te pones encima del código y verás un 'hint' que te dará el valor que tiene.
Responder Con Cita
  #5  
Antiguo 09-09-2012
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 amigo

Prueba con esta función que a mi me está funcionando bién:
Código Delphi [-]
function ExisteNro(SG: TStringGrid; const aNum: string; const aCol: Integer): Boolean;
var
  r: Integer;
begin
  Result := False;
  r      := SG.FixedRows;
  while (r < SG.RowCount-1) and not Result do
  begin
    Result := SG.Cells[aCol, r] = aNum;
    inc(r);
  end;
end;

// prueba
procedure TForm1.Button1Click(Sender: TObject);
begin
  // en Col 1 puse unos números
  if not ExisteNro(StringGrid1, Edit1.Text, 1) then  
    StringGrid1.Cells[1, StringGrid1.Row] := Edit1.Text;
end;
asi vamos descartando posibilidades...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 09-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me funciona pero la segunda vez me da un error de is not a valid floating point value.
estoy seguro que es por otra razon, la estoy buscando amigo.
Este es el codigo completo para que lo veas:

Código Delphi [-]
procedure TFFactura.BitBtn2Click(Sender: TObject);
var i,e : integer;
Valor: String;
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
      If CBFactura.Text = 'Productos' then
      begin
      FSelProdFact.CheckBox1.Checked:= True;
      end;
      If CBFactura.Text = 'Materiales' then
      begin
      FSelProdFact.BitBtn4.Visible:= False;
      FSelProdFact.CheckBox1.Checked:= False;
    //  FSelProdFact.Edit2.ReadOnly:= False;
      end;
      FSelProdFact.ShowModal;
   finally
      // si no presiona cancelar en FSelProdFact
      If FSelProdFact.Cancela = False then
      Begin
      If Cuenta > 1 then SGFact.RowCount := SGFact.RowCount + 1;
      // si se vende un producto
      If FSelProdFact.CheckBox1.Checked = True then
      begin
         QTemp.Close;
         QTemp.SQL.Text := 'SELECT Descripcion|| '' '' ||Categoria|| '' '' ||SubCategoria AS Descr, Precio1 FROM Articulos '+
                           'WHERE CodParte = '+QuotedStr(FSelProdFact.Edit1.Text);
         QTemp.Open;
      end;

      // Si se vende un Material
      If FSelProdFact.CheckBox1.Checked = False then
      begin
         QTemp.Close;
         QTemp.SQL.Text := 'SELECT Descripcion AS Descr FROM Materiales '+
                           'WHERE CodMaterial = '+QuotedStr(FSelProdFact.Edit1.Text);
         QTemp.Open;
      end;
     
   // codigo que ve funcion de ecfisa
  // revisa la columna 2
    if not ExisteNro(SGFact, FSelProdFact.Edit2.Text, 2) then
    begin
      //  SGFact.Cells[2, SGFact.Row] := FSelProdFact.Edit2.Text;
 
         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;
         end;

      FSelProdFact.Free;
      end;

end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 09-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En principio, sin ningún delphi para probar, esto está mal:

Código Delphi [-]
While i < SGFact.RowCount do

Ya que el contador es desde cero, así que tendrá que ser:

Código Delphi [-]
While i < SGFact.RowCount-1 do

Fíjate en el código de ecfisa.
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
Comparar 2 numeros jzginez OOP 6 18-02-2010 01:41:11
comparar numeros como string nikotina Varios 10 16-09-2008 11:11:50
Comparar números. REHome .NET 5 16-07-2008 00:49:18
Comparar dos bases de datos paty_rlopez Conexión con bases de datos 2 02-09-2006 20:18:46
comparar listas de numeros Tala SQL 4 06-07-2006 00:45:14


La franja horaria es GMT +2. Ahora son las 08:19:31.


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