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 15-01-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
Unhappy Actualizar un campo segun opcion de picklist de otra columna de un dbgrid

Mi problema es el sigueinte de un picklist de un dbgrid existen varias opciones y segun la opcion, debo de mostrar otro valor en otro campo del mismo registro. Sin embargo esto debe suceder cuando se seleccione la opcion del picklist. Ya lo hice en el evento OnDataChange del DataSource, pero si le asigno el valor directamente a la tabla me bloquea el programa con un access violation y debo resetearlo. Lo raro es que si le asigno el valor a un dbedit que esta asociado al mismo datasource lo hace bien. Y despues trate de hacerlo con DefaultColumnCell pero inserta el valor en el siguiente registro al que estoy trabajando.

Espero haberme explicado y me puedan ayudar.
Gracias de antemano y saludos
Responder Con Cita
  #2  
Antiguo 15-01-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Esto Fue lo que se me Ocurrio

Mira revisando el caso por encimita lo unico que te puedo recomendar es qie utilizes el evento StateChage del datasource, lo unico qe tienes sera que validar si la columna es la del pick list y el estado es de insercion que actualize el valor, y eso si y muy importante, lee el valor directamente desde el picklist y no de la tabla acuerdate que en ese evento aun no se ha ejecutado el post, y suerte
Responder Con Cita
  #3  
Antiguo 17-01-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
Hola y gracias por tu recomendacion pero podrias ser mas especifico quizas enviandome si te es posible un ejemplo por favor.

Gracias de antemano
Responder Con Cita
  #4  
Antiguo 17-01-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
pues mira en el evento puedes colocar un codigo mas o menos asi

if (Tabla.State in [dsedit, dsinsert]) and //si esta seleccionado la celda then //disculpa el lapso mental pero no recuerdo la instruccion de memoria
begin
//Determinar el valor del pick list
//Actuañlizar la tabla
end


NOTA disculpa lo malo del ejemplo es que ya es fin de semana y cerre la oficina, prueba y cualquier duda me vuelves a escribir
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #5  
Antiguo 17-01-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
ya tengo un ejemplo mas explicito


if (Tabla.State in [dsedit, dsinsert]) and Grid.SelectedIndex = nColumnaPickList then
begin
if ValorPickList = 'A' then
Tabla.FieldbyName(CampoaModificar).AsString := 'B'
else if ValorPickList = 'B' then
Tabla.FieldbyName(CampoaModificar).AsString := 'C'
end

donde:

nColumnaPickList: Indice de la columna dpnde esta el picklist
ValorPickList: Es el valor que tiene la columna del pick list(no investigue como obtenerlo)
CampoaModificar: es el nombre del campo que deseas modificar dependiendo el valor del pick list onStateChange del data source al que esta conectado el grid.

Espero que te sirva, si falto algo hazlo saber a ver en que te puedo ayudar, SUERTE


Todo este procedimiento debe ir dentro del evento
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #6  
Antiguo 17-01-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
Hola Eduarcol Gracias por tu ejemplo pero lo que pasa es que realiza la asignacion del valor despues de haber guardado el registro y el asunto es que debe ser al momento de seleccionar la opcion del picklist. Mira yo lo hice de esta manera:
En el evento onDataChange le codifique que si el valor del campo era igual a 'Revalidacion' busacara 'Revalidacion' en la otra tabla de costos y asignara el costo de la revalidacion a un dbedit relacionado con la tabla que esta relacionada con el dbgrid que tiene el picklist. Despues en el evento OnDrawColumnCell codfique. Si el edit tiene un valor asignaselo al campo 'Costo' de la tabla que esta relacionada con el Dbgrid, es decir el valor se lo asigno directamente al objeto TTable.fieldbyname no al dbgrid, y entonces se lo asigna, pero lo malo es que el costo se asigna aparece en el registro anterior de donde lo estoy insertando en el DBGrid y por lo tanto no se lo asigna al campo del registro en el que estoy actualmente insertando o editando la informacion.

Espero haberme explicado, sino preguntame en especifico que no te explique bien.

Espero me puedas ayudar y entender y una vez mas Gracias de antemano
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 01:09:05.


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