FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Recorrer un dbgrid
Buenos dias foro:
Tengo una duda se puede recorrer por filas un dbgrid??? y verificar por ejemplo en mi caso que si esa fila tiene en el campo flag un 1 y ejecutar una accion con esa fila???? Espero haberme hecho entender muchas gracias
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas Última edición por el_barto fecha: 01-08-2005 a las 18:53:28. |
#2
|
||||
|
||||
Porque recorrer el DBGrid, cuando puedes recorrer la tabla mucho mas facil?
__________________
[Crandel] |
#3
|
||||
|
||||
Estuve analizando tu pregunta porque una vez necesite hacer lo mismo, pero al final desistí, lo que hice fue implementar todas las búsquedas en la BD.
Pero de todas formas para acceder a un dato en un DBGrid puedes utilizar la propiedad Filds cuando tengas una celda activa(seleccionada). Por ejemplo DBGrid1->Fields[4]->Text; suponiendo que en la posición 4 este el campo flag del que me hablas y a partir de ahí lo comparas con lo que quieras. Ahora recorrerlo es otra cosa... si me entero te lo mando.. /*Saludos*/
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
#4
|
||||
|
||||
Ojala lo puediera hacer en la tabla, que mas quisiera yo pero para eso debo hacer lo siguiente:
Buenos dias foro: Tengo un problemita que no he podido solucionar y ya me empezo a deseperar. Resulta que necesito modificar un campo de mi tablas subcomp, pero es que la tabla subcomp tiene muchas complicaciones por que los datos son asi: item nombre_atributo codigo_prod valor nombre_especifico consecutivo flag 1 Color 100 av79 Televisor sony 80 0 1 Marca 100 Sony Televisor sony 81 0 1 Modelo 100 Triniton Televisor sony 82 0 Entonces necesito es que me muestre solo uno de estos registros asi consecutivo nombre_especifico flag 80 Televisor sony 0
pero lo que no se como hacer es el ModifySql del dataset para que solo me modifique el consecutivo 80 y no todos los que tengan como nombre especifico Televisor Sony. O si hubiera algo que pudiera hacer Gracias, al que me ayude le prometo que hay cerveza por montones
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas Última edición por el_barto fecha: 01-08-2005 a las 20:25:01. |
#5
|
||||
|
||||
No entiendo muy bien que tiene que ver lo que escribiste en la última respuesta respecto a la última.
pero si lo que queres es actualizar un registro podes hacer:
es esto lo que necesitas??
__________________
[Crandel] |
#6
|
||||
|
||||
es que yo decia como recorrer la grilla dado que no he podido modificar solo un registro, para despues recorrer la tabla ,en el ejemplo todos tienen como nombre especifico Televisor Sony yo necesito que en una grilla solo me muestre uno de los tres y que cuando lo modifique solo me modifique en este caso solo el consecutivo 80, por que cuando modifica siempre modifica a todos los que tengan el nombre_especifico Televisor Sony.
En el modify de mi dataset agregue la linea que me sugeriste y en el select deje la linea que yo tenia pero ahora ya no me modificaaaaa. Entonces no se como hacer para hacer el distinct y que solo me modifique 1 registro por cada nombre_especifico Ojala esta vez si me hubiese hecho entender
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#7
|
||||
|
||||
Cita:
- Si es así, añade en el SELECT, la clave unica de ese producto, así solo muestras 1 producto en el resultado. En el modifySQL añades la misma restricción. - Si no es así, deberás esperar que el usuario haga clic en uno de los resultados, y despues pasarle la clave unica en el modifySQL Yo al menos, no sé si el consecutivo es único o no. Si utilizas la claúsula distinct en el select, es que puede haber varios Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
||||
|
||||
No en realidad consecutivo es solo una bandera que usamos para manejar el item, consecutivo no se repite nunca, pero las llaves primarias de esta tabla que quiero modificar es:
item, nombre_atributo, codigo_comp
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#9
|
||||
|
||||
Tal y como dijo Crandel:
Yo he añadido el prefijo OLD_ , como son claves primarias no puede cambiar. No dudo que pueda equivocarme ya que en c/s estoy empezando Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#10
|
||||
|
||||
pero ya se cual es el problema resulta que yo no puedo armar un where de un deletesql ni el modifysql sino coloco los campos con anterioridad en el select, entonces yo no puedo colocar en el select el campo nombre_especifico por que entonces el distinct no me funciona (me muestra todos los registros sin hacer distincion de ninguna clase).
Entonces como no lo pude colocar en el select no lo puedo colocar en el where de mi modify y por tal motivo me modifica todos los registros que tengan un nombre_especifico comun, en este caso todos los registros que tengan como nombre_especifico televisor sony son modificados. En mi humilde opinion creo que es imposible hacer lo que yo queria, entonces buscare otra forma de hacerlo, lastima por que como programador es frustrante encontrarse con casos como este
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#11
|
||||
|
||||
Por qué te va a modificar todos si vos tenes un solo consecutivo = 80?
__________________
[Crandel] |
#12
|
||||
|
||||
no por que no puedo colocar ese where por que es que esos tres campos no son los unicos que esxisten existen aproximadamente 30 registros en donde cambia el nombre_especifico es decir ya no son televisor_sony si no puede ser dvd_panasonic pero presenta el mismo inconveniente ademas si aumentan los productos es muy dificil controlar eso, si me hago entender.
Pero mira lo estoy resolviendo asi de los campos que mencione que tiene esta tabla 2 de ellos se guardaran en otra tabla entonces lo que hare es capturar la excepcion de los registros que esten repetidos y se intenten guardar entonces en el except colocare un Next que lo que hace es omitir ese registro y pasar al siguiente.
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#13
|
||||
|
||||
Pero cuantos elementos con consecutivo 80 tenes?
__________________
[Crandel] |
#14
|
||||
|
||||
solo uno el consecutivo es un trigger que va incrementando para tener un control sobre el primer item que se crea no es para mas.
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#15
|
||||
|
||||
pero entonces te tiene que modificar un solo registro con esta instrucción, pasandole el parámetro pcons = 80:
__________________
[Crandel] |
#16
|
||||
|
||||
claro es facil por que lo puedo colocar en el select y esconderlo usando el editing de la grilla, gracias Crandel.
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
|
|
|