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 01-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 01-08-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Porque recorrer el DBGrid, cuando puedes recorrer la tabla mucho mas facil?
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 01-08-2005
Avatar de oracle
oracle oracle is offline
Miembro
 
Registrado: feb 2005
Posts: 99
Poder: 20
oracle Va por buen camino
Thumbs up

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.
Responder Con Cita
  #4  
Antiguo 01-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
Lightbulb

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

Código SQL [-]
select distinct consecutivo, nombre_especifico, flag from subcomp

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.
Responder Con Cita
  #5  
Antiguo 01-08-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
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:
Código SQL [-]
     UPDATE subcomp
     SET nombre_especifico= nombre, flag = flag
     WHERE consecutivo= cons;

es esto lo que necesitas??
__________________
[Crandel]
Responder Con Cita
  #6  
Antiguo 01-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 02-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por el barto
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
¿Puedes saber de antemano cual quieres modificar?
- 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.
Responder Con Cita
  #8  
Antiguo 02-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
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
Responder Con Cita
  #9  
Antiguo 02-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Tal y como dijo Crandel:

Código SQL [-]
 UPDATE subcomp
     SET nombre_especifico= nombre, flag = flag
     WHERE item = :OLD_item and
               nombre_atributo = :OLD_nombre_atributo and 
               codigo_comp = :OLD_codigo_comp;

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.
Responder Con Cita
  #10  
Antiguo 02-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
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
Responder Con Cita
  #11  
Antiguo 02-08-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Por qué te va a modificar todos si vos tenes un solo consecutivo = 80?
__________________
[Crandel]
Responder Con Cita
  #12  
Antiguo 02-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
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
Responder Con Cita
  #13  
Antiguo 03-08-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Pero cuantos elementos con consecutivo 80 tenes?
__________________
[Crandel]
Responder Con Cita
  #14  
Antiguo 03-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
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
Responder Con Cita
  #15  
Antiguo 03-08-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
pero entonces te tiene que modificar un solo registro con esta instrucción, pasandole el parámetro pcons = 80:

Código SQL [-]
     UPDATE subcomp
     SET nombre_especifico= nombre, flag = flag
     WHERE consecutivo= cons;
__________________
[Crandel]
Responder Con Cita
  #16  
Antiguo 03-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
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
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 11:24:27.


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