Ir al contenido


Foto

Saber que Celda esta Seleccionada Stringrid y pasarle una consulta


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

#1 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 22 enero 2017 - 02:07

hola amigos, estoy escribiendo para ver si me ayudan con este caso, necesito saber que celda esta selecionada stringrid y luego tomar el valor que tenga esta celda para luego llenar las demas celda que siguen de la misma fila.

 

stringrid esta asi

 

linea   codigo                  cant  descripción   precio   total

1         celda seleciona

 

utilizo este codigo para saber la cerlda codigo seleccionada 


delphi
  1. procedure TFactura.LISTAKeyPress(Sender: TObject; var Key: Char);
  2.  
  3. begin
  4. if key = #13 then
  5. begin
  6.  
  7. UniQuery2.SQL.Clear;
  8. UniQuery2.SQL.Text:='Select * '+
  9. ' from `articulos`'+
  10. ' where anular = 0 and articulos.codigo = ' + lista.Cells[lista.Col, lista.Row] + ' and articulos.sucursal = '+ Finformacion.qrSucursalid.AsString;
  11. UniQuery2.Open;
  12. end;
  13. end;

de esa manera la consulta funciona perfectamente solo me falta llenar las de mas celdas del stringrid con los datos de la consulta, que se llenarían descripción, precio y total y luego un codigo que me haga la operacion matematica de cantidad * precio = Total, cuando introdusca la cantidad del producto buscado.

 

bueno esto esto amigos.


  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 22 enero 2017 - 02:29

Las propiedades Col y Row del TStringGrid te muestran la columna y fila de la celda que está seleccionada.

Saludos.
  • 1

#3 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 22 enero 2017 - 04:21

hola estoy tratando de esta forma 


php
  1. procedure TFactura.LISTAKeyPress(Sender: TObject; var Key: Char);
  2.  
  3. begin
  4. if key = #13 then
  5. begin
  6.  
  7. if lista.Cells[lista.Col, lista.Row] <> '' then
  8. begin
  9. UniQuery2.SQL.Clear;
  10. UniQuery2.SQL.Text:='Select * '+
  11. ' from `articulos`'+
  12. ' where anular = 0 and articulos.codigo = ' + lista.Cells[lista.Col, lista.Row] + ' and articulos.sucursal = '+ Finformacion.qrSucursalid.AsString;
  13. UniQuery2.Open;
  14.  
  15. lista.cols[3].Add(UniQuery2nombre.AsString);
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22. // con esto agrego en la celda de la columna seleccionada> lista.cols[3].Add(UniQuery2nombre.AsString);

con ese codigo se agrega correctamente solo que hay problema si yo escribo el codigo lo llena bien pero cuando borro el codigo y introduzco otro el resultado de la consulta se va para otra fila siguiente del stringrid y no en la misma que estaba como reemplazo.


  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 22 enero 2017 - 04:34

amell2020, has enviado un reporte a moderación.

No se si lo hiciste por error, o con intención.

Pero si me voy a permitir advertirte de que no es la primera vez que lo haces. Los reportes para moderación no son para responder a los mensajes o posts. Como su nombre lo indica, un reporte a moderación es para advertir a moderadores y administradores de algún mensaje que viola las normas como ser insultos, spam, etc.

 

El mensaje de escafrandra no califica para moderación, por tanto procedí a eliminar el reporte. De continuar con esta conducta tuya, nos veremos obligados a tomar medidas de seguridad contra ti. Por favor, haz un mejor uso del foro.

 

Este es tu mensaje al centro de reporte:

 

 

probé con esto lista.cols[3].Add(UniQuery2nombre.AsString);
el agrega los datos bien en esa posicion solo que si vuelvo escribir en esa misma celda los datos se pasan a la segunda linea de columna

 

Respecto, a tu dudas, no logro entender que es lo que pretendes hacer. Si nos describes que es lo que tienes, y que es lo que deseas conseguir y el porqué o para que de esa funcionalidad/implementación podremos ver mejor el contexto y poder evaluar alternativas y de encontrar el problema.

No seas escueto, no te limites en palabras. Explícate mejor, y por favor, cuida los signos de puntuación. No es lo mismo leer una frase sin signos que otra que si los tiene.

Ya tienes varios mensajes y no eres nuevo en el foro. Sabes que cuanto más se cuide en la descripción del problema más fácil y rápido se llega a una solución.

 

Saludos,


  • 0

#5 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 22 enero 2017 - 05:12

Quizás amell2020 no tenga claro que un reporte a moderación no es una pregunta ni servirá para conseguir una respuesta de algún moderador, más bien una llamada de atención por "dar al botón de alarma" sin motivo.

 

hola estoy tratando de esta forma 


php
  1. // con esto agrego en la celda de la columna seleccionada> lista.cols[3].Add(UniQuery2nombre.AsString);

... el resultado de la consulta se va para otra fila siguiente del stringrid y no en la misma que estaba como reemplazo.

 

Es muy difícil entenderte, si no te haces entender de forma fácil y clara, es complicado que alguien se tome el tiempo de descifrar tu mensaje y responderte con exactitud a tu duda. Creo que el título del tema "Saber que Celda esta Seleccionada Stringrid" no es muy ajustado a lo que preguntas. La respuesta a esa pregunta es clara y contestada en el 2º mensaje del hilo.

 

Lo que hace lista.cols[3].Add('Texto') es añadir en la siguiente fila de la columna 3 el texto, de forma que tu código hace lo que le has dicho que haga. Si lo que quieres es escribir en la siguiente columna tendrás que hacer Rows[x].Add y si lo que quieres es escribir en una celda concreta, tendrás que especificar la celda donde escribes lista.Cells[Col][Row]:= 'mi texto'.

 

La lectura de la ayuda de Delphi te será muy útil.

 

 

Saludos.


  • 0

#6 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 22 enero 2017 - 05:22

Amigo Delphius disculpe por error del reporte, no era mi intensión hacerlo, al parecer seleccione el botón incorrecto.

 

bien voy detallar mi tema:

 

Estoy utilizando el componente StringGrid de delphi,  la cual lo utilizare para llenar datos de una tabla de mi Base de Datos llamada articulos.

codigo

descripcion

precio

 

tengo el StringGrid detallado de esta forma para que se muestre de esta forma decuerdo a una consulta que haria en tiempo de ejecusion 

linea  codigo  cantidad    descripcion   precio  total

1          3           2              Abanico          50     100.

 

la consulta la quiero hacer en la celda llamada codigo (que desconozco cual es la posicion al seleccionarla al escribir) para tomar el valor que introduzca y llevarlo a esta consulta que tengo:


delphi
  1. procedure TFactura.LISTAKeyPress(Sender: TObject; var Key: Char);
  2.  
  3. begin
  4. if key = #13 then
  5. begin
  6.  
  7. begin
  8. UniQuery2.SQL.Clear;
  9. UniQuery2.SQL.Text:='Select * '+
  10. ' from `articulos`'+
  11. ' where anular = 0 and articulos.codigo = ' + valor de la celda que necesito + ' and articulos.sucursal = '+ Finformacion.qrSucursalid.AsString;
  12. UniQuery2.Open;
  13.  
  14. // después de hacer la consulta necesito llenar la linea de fila seleccionada con los datos de la query. 

los datos del query son

uniquery2nombre.astring

uniquery2precio.astring

 

luego necesitaría que en el stringGrid los campos Cantidad, precio se multiplicaran; para luego mostrarlo como resultado Total del Stringrid.


  • 0

#7 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 22 enero 2017 - 05:44

Si has leído las respuestas, en la respuesta nº 5 te doy la solución.

 

Esto escribe en la celda seleccionada:


delphi
  1. lista.Cells[lista.Col, lista.Row]:= RESULTADO_DE_MI_CONSULTA;

En el caso de que tu selección halla cambiado, no escribirá en la celda anterior, para eso guarda las variables fila y columna que usarás después:


delphi
  1. lista.Cells[Columna, Fila]:= RESULTADO_DE_MI_CONSULTA;

Saludos.


  • 0

#8 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 22 enero 2017 - 06:22

Con la explicación que me  pasaste  pasa esto dejo la imagen para que observen 

 

tu soluciones:


delphi
  1. begin
  2. if key = #13 then
  3. begin
  4.  
  5. if lista.Cells[lista.Col, lista.Row] <> '' then
  6. begin
  7. UniQuery2.SQL.Clear;
  8. UniQuery2.SQL.Text:='Select * '+
  9. ' from `articulos`'+
  10. ' where anular = 0 and articulos.codigo = ' + lista.Cells[lista.Col, lista.Row] + ' and articulos.sucursal = '+ Finformacion.qrSucursalid.AsString;
  11. UniQuery2.Open;
  12.  
  13. lista.Cells[lista.Col, lista.Row]:=(UniQuery2nombre.AsString); 

Como vez el campo de query se pasa al mismo lugar donde esta la celda de la consulta, para bien explicarle de la consulta yo voy almacenar tres resultado, que son codigo, nombre, precio, y un campo que esta en StringGrid llamado Cantidad que lo pongo manual para luego ser calculada la cantidad * precio, ese resultado lo pasaría para la celda llamada total. 

 

por esa razon que preguntaba como saber cual es la celda seleccionada de mi StrinGrid para hacer la consulta y luego llenar los datos antes mencionados.

 

yo tratando un poco logre hacerlo de este modo rellenar las celdas del stringrid seleccionada:


delphi
  1. lista.cols[3].Add(nombre tomado de la consulta);
  2. lista.cols[4].Add(precio tomado de la consulta);

pero tengo el siguiente error cuando escribo por primera vez en la celda Codigo(donde esta envento de la consulta), los resultados pasa correctamente, pero si vuelvo a escribir otro código para consultarlo, la consulta pasa a la siguiente fila como si fuera un saldo de linea o fila.

 

necesito saber porque pasa ese problema y una vez corregido como logro hacer el calculo  de dos celdas de mi stringrid.

 

bueno espero que puedan entenderme, quizás por la prisa de querer explicarle todo con menos palabras, es  mi problema mayor. jjj


  • 0

#9 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 23 enero 2017 - 02:48

No entiendo cual es la funcionalidad que el usuario hace del StringGrid, solo entiendo que quieres rellenar celdas y con el método lista.cols[3].Add SIEMPRE AÑADE: ESCRIBE EN LA SIGUIENTE FILA

 

...pero tengo el siguiente error cuando escribo por primera vez en la celda Codigo(donde esta envento de la consulta), los resultados pasa correctamente, pero si vuelvo a escribir otro código para consultarlo, la consulta pasa a la siguiente fila como si fuera un saldo de linea o fila.

 

necesito saber porque pasa ese problema y una vez corregido como logro hacer el calculo  de dos celdas de mi stringrid.

 

 

Ye te expliqué porqué pasa eso:

 

.......

Lo que hace lista.cols[3].Add('Texto') es añadir en la siguiente fila de la columna 3 el texto, de forma que tu código hace lo que le has dicho que haga. Si lo que quieres es escribir en la siguiente columna tendrás que hacer Rows[x].Add y si lo que quieres es escribir en una celda concreta, tendrás que especificar la celda donde escribes lista.Cells[Col][Row]:= 'mi texto'.

 

La lectura de la ayuda de Delphi te será muy útil.

 

 

 

Saludos.


  • 0

#10 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 23 enero 2017 - 03:51

okay, explicare cual es la  funcionalidad de el strinGrid, es de llenar como dije los datos de un consulta. tengo una tabla llamada articulos que es para llenarlo en el stringGrid los campos de la tabla articulos, luego guardarlo en una tabla llamada detalle_articulos.

 

el caso es que yo quiero es cuando yo consulte dentro de una celda del stringGrid se llenen la celdas con los valores de la consulta, como si fuera una hoja de registro en excel que tendras tres campo calculados para mostrar el total. 


  • 0

#11 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 24 enero 2017 - 12:24

http://delphiallimit...componente.html

Quizás esto te ayude como guia

Enviado desde mi KFFOWI mediante Tapatalk


  • 0




IP.Board spam blocked by CleanTalk.