Ir al contenido


Foto

No permitir datos duplicados en una columna stringgrid


  • Por favor identifícate para responder
3 respuestas en este tema

#1 rafaelm

rafaelm

    Newbie

  • Miembros
  • Pip
  • 2 mensajes

Escrito 18 junio 2020 - 10:34

hola a todos , espero me puedan ayudar tengo datos que voy agregando a un stringgrid desde un dbgrid temporalmente antes de ir a una tabla (delphi 7+ access), lo que necesito hacer y no he podido es que el stringgrid no permita datos duplicados y al detectarlo eliminar la fila (o moverla al final y eliminarla), gracias de antemano si me pueden ayudar  


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 19 junio 2020 - 08:33

hola a todos , espero me puedan ayudar tengo datos que voy agregando a un stringgrid desde un dbgrid temporalmente antes de ir a una tabla (delphi 7+ access), lo que necesito hacer y no he podido es que el stringgrid no permita datos duplicados y al detectarlo eliminar la fila (o moverla al final y eliminarla), gracias de antemano si me pueden ayudar  

 

Hola rafaeim, bienvenido a DelphiAccess

 

¿Podrías ser mas específico en tu requerimiento?

 

Si nos muestras un ejemplo de lo que estás haciendo sería más fácil ayudarte.

 

Saludos


  • 0

#3 rafaelm

rafaelm

    Newbie

  • Miembros
  • Pip
  • 2 mensajes

Escrito 19 junio 2020 - 12:23

hola gracias por responder , si voy a tratar de explicarme un poco mejor subi una imagen para que lo veas a nivel visual , es una aplicacion de ventas , tengo un dbgrid que lo alimenta una tabla productos , con evento "onclickcell" busco en la tabla apatir del id del producto y los voy agregando linea por linea en el stringgrid con un conjunto if-else  el problema es que con la condcion que le aplico al if (que la existencia - la cantidad en el stringgrid no sea >= 0 ) valida esa linea pero agrega en la siguiente por eso se me ocurrio que no permitiera celdas duplicadas en el stringrid  https://subefotos.co...37631b9b44o.jpg


delphi
  1. procedure TfrmMain.dgProductoCellClick(Column: TColumn);
  2. var
  3. i:double;
  4. x:double;
  5. a:integer;
  6. begin
  7. a:=1;
  8. buscarcod(dgproducto.SelectedField.AsString, Encontrado);
  9. if Encontrado and not(DM.tblProducto.fieldbyname('Existencia').Asinteger = 0) then
  10.  
  11. if(StringGrid1.Cells[2, 1] = '') then
  12. begin
  13. StringGrid1.Cells[0, 1]:=DM.tblProducto.fieldbyname('Producto').AsString;
  14. StringGrid1.Cells[2, 1]:=DM.tblProducto.fieldbyname('Precio').AsString;
  15. StringGrid1.Cells[1, 1]:=DM.tblProducto.fieldbyname('Existencia').AsString;
  16. StringGrid1.Cells[6, 1]:=DM.tblProducto.fieldbyname('tipo').AsString;
  17. i:=((DM.tblProducto.fieldbyname('precio').asfloat)*(strtofloat(maskedit1.Text)));
  18. x:= ceil(i);
  19. StringGrid1.Cells[3, 1]:=(FormatFloat('0.000',(roundc ((x)))));
  20. StringGrid1.Cells[4, 1]:= inttostr(1);
  21. StringGrid1.Cells[5, 1]:=DM.tblProducto.fieldbyname('Id').AsString;
  22. StringGrid1.Cells[7, 1]:=inttostr(1);
  23. sumadolares;
  24. sumabs ;
  25. end
  26. else
  27.  
  28. if(StringGrid1.Cells[2, 1] <> '') and (StringGrid1.Cells[0, 1]=DM.tblProducto.fieldbyname('Producto').AsString) and (((dm.tblProducto.FieldByName('existencia').Asinteger-1) - strtoint(frmMain.StringGrid1.Cells[4, 1])) >= 0 )
  29. then
  30. begin
  31. StringGrid1.Cells[4, 1]:=inttostr (strtoint(StringGrid1.Cells[4, 1])+1);
  32. sumadolares;
  33. sumabs ;
  34. end
  35. else

 

Hola rafaeim, bienvenido a DelphiAccess

 

¿Podrías ser mas específico en tu requerimiento?

 

Si nos muestras un ejemplo de lo que estás haciendo sería más fácil ayudarte.

 

Saludos

?5b60b22adc015299cab24f37631b9b44o.jpg


  • 0

#4 rgstuamigo

rgstuamigo

    Member

  • Miembros
  • PipPip
  • 33 mensajes
  • LocationSanta Cruz-Bolivia

Escrito 03 diciembre 2021 - 08:57

hola a todos , espero me puedan ayudar tengo datos que voy agregando a un stringgrid desde un dbgrid temporalmente antes de ir a una tabla (delphi 7+ access), lo que necesito hacer y no he podido es que el stringgrid no permita datos duplicados y al detectarlo eliminar la fila (o moverla al final y eliminarla), gracias de antemano si me pueden ayudar  

Pues viendo tu tema, y  haber si te estoy entendiendo bien :cheesy: ; pues te recomendaría 2 Opciones:

Opcion 1: Que en tu Dataset( ideal seria un Query), ya tengas los datos correctos, es decir no repetidos. ;) .

Averigua la clausula  "DISTINCT" en sentencias SQL. (y) .

Opcion2: Que te hagas una Funcion (Function) que tenga como parámetro de entrada un string  y la columna; dicha función recorrería dicha columna en tu StringGrid y te verificaría si dicho string se encuentra en alguna celda de la determinada columna de los datos de dicho StringGrid, si es el caso no copias esa fila del dataSet a tu StringGrid: (y)

 

Revisa y elije cual de estas dos opciones se adapta mejor a tu necesidad.

 

Espero te sirva. Saludos.. (y)


  • 0




IP.Board spam blocked by CleanTalk.