PDA

Ver la Versión Completa : Selección de campo DBGrid


wilcg
11-08-2019, 21:55:32
Hola amigos tengo una consulta,
Tengo una tabla en postgresql que muestro en un dbgrid, y dentro de cada fila hay 5 campos

CREATE TABLE precios
(
id_precio serial,
codigo character varying(12) NOT NULL,
fecha date,
precio1 numeric(9,2) DEFAULT 0,
precio2 numeric(9,2) DEFAULT 0,
);

lo que quiero es mostrar en un TEdit el campo que seleccione en el dbgrid, OJO: solo mostrar los campos (precio1 y precio2)

he estado probando
Edit1.Text := DBGrid1.SelectedField.AsString;
pero no he podido encontrar una excepción, para solo mostrar los campos deseados.

Casimiro Notevi
11-08-2019, 22:43:00
Si cambias el edit por un dbedit, ya lo tienes solucionado, sin hacer nada.
La otra forma es recordar que el dbgrid es solamente un presentación, una ventana, una muestra de lo que hay en un dataset.
Así que olvida el dbgrid, debes extraer los datos del dataset, no del dbgrid.

movorack
12-08-2019, 15:05:58
Así como te ha dicho Casimiro, lo mejor es usar los componentes de base de datos.

Ejemplo:
https://i.imgur.com/XuoJL9e.png

Y un tutorial muy básico: Add Database Components (IBX No Code Tutorial) (http://docwiki.embarcadero.com/RADStudio/Rio/en/Add_Database_Components_(IBX_No_Code_Tutorial))

wilcg
12-08-2019, 18:27:34
Gracias por responder, efectivamente me olvide de mencionar sobre el uso de DBEdit, no es la solución que quiero darle, por que el resultado del campo seleccionado quiero almacenarlo en una variable, para posterior a esto darle uso en varios form.
Solo que la pregunta lo pantee de esta manera, quisas estuvo mal.

Casimiro Notevi
12-08-2019, 19:06:45
No entiendo, ¿cuál es el problema? ¿acaso no puedes tomar el valor del dbedit para pasarlo a cualquier variable?

movorack
12-08-2019, 19:21:26
Respuesta rápida:
.. olvida el dbgrid, debes extraer los datos del dataset, no del dbgrid.

Si ya tienes el valor en un campo del dataset, puedes acceder a el desde otros formularios, o en el evento AfterScroll del dataset puedes alimentar la variable que necesites.


unit Unit2;

interface

uses
Unit1;

// ..
var
Form2: TForm2;
global_ProductoCant; Extended;

implementation
// ..

procedure TForm2.MostrarValor;
begin
ShowMessage(Form1.cdsVentaProductoCant.AsString);
end;



unit Unit1;

// ..

uses
Unit2;

// ..

procedure TForm1.cdsVentaAfterScroll(DataSet: TDataSet);
begin
global_ProductoCant := cdsVentaProductoCant.AsFloat;
end;

TiammatMX
12-08-2019, 20:17:43
Gracias por responder, efectivamente me olvide de mencionar ...

Ése es el problema. Si el problema no se plantea adecuadamente, la solución no llega al resultado deseado. No trabajamos para la NSA o el FBI o el Banco Mundial de Desarrollo como para ocultar datos que pueden hacer más sencillo llegar a donde quieres...

movorack
12-08-2019, 21:04:15
Ése es el problema. Si el problema no se plantea adecuadamente, la solución no llega al resultado deseado. No trabajamos para la NSA o el FBI o el Banco Mundial de Desarrollo como para ocultar datos que pueden hacer más sencillo llegar a donde quieres...

^\||/^\||/^\||/