procedure TForm4.folioKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin tabla.Close; tabla.SQL.Text := 'select * from entradas where folio=:folio'; tabla.Params[0].Value := folio.Text; tabla.Open; DBGrid1.DataSource.DataSet.FieldByName('nombre').value:= tabla.ParamByName('nombre').Value; DBGrid1.DataSource.DataSet.FieldByName('fecha').value:= tabla.ParamByName('fecha').Value; ..................

mostrar datos en dbgrid por folio
#1
Escrito 17 agosto 2012 - 10:33
#2
Escrito 17 agosto 2012 - 10:38
#3
Escrito 17 agosto 2012 - 10:39
#4
Escrito 17 agosto 2012 - 11:48

Cámbialo por FieldByName

procedure TForm4.folioKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin tabla.Close; tabla.SQL.Text := 'select * from entradas where folio=:folio'; tabla.Params[0].Value := folio.Text; tabla.Open; DBGrid1.DataSource.DataSet.FieldByName('nombre').value:= tabla.ParamByName('nombre').Value; // AQUI DBGrid1.DataSource.DataSet.FieldByName('fecha').value:= tabla.ParamByName('fecha').Value; // Y AQUI ..................
Saludox !

#5
Escrito 17 agosto 2012 - 11:58
procedure TForm4.folioKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then With tabla Do begin Close; SQL.Text := 'select * from entradas where folio=:folio'; ParamByName('folio').AsString:= folio.Text; Open; end: // With ...

#6
Escrito 17 agosto 2012 - 12:04
#7
Escrito 17 agosto 2012 - 12:30
Algo así:
Suponiendo que tu DataSet se llama Tabla, el DataSource se llama dsDatos y el TDBGrid se llama GridDatos:
1. Propiedad DataSet del TDataSource (dsDatos)-> Tabla
2. Propiedad DataSource del TDBGrid (GridDatos) -> dsDatos
Y al momento de hacer el Open de Tabla, el grid GridDatos mostrará la información sin necesidad de que lo "agregues"...
Saludox !

#8
Escrito 17 agosto 2012 - 12:33
#9
Escrito 17 agosto 2012 - 12:49
Si el Grid te está mostrando más datos de los que deseas, el problema realmente no está en el Grid, si no en tu DataSet
Saludox !

#10
Escrito 17 agosto 2012 - 12:52
if Key = #13 then begin query.Close; query.SQL.Text := 'select * from entradas where folio=:folio'; query.Params[0].Value := folio.Text; query.Open; fecha.Date := query.FieldByName('fecha').AsDateTime; ClientDataSet1.Insert; ClientDataSet1.FieldByName('codigo').value:= query.FieldByName('codigo').Value; ClientDataSet1.FieldByName('nombre').value:= query.FieldByName('nombre').Value; ClientDataSet1.FieldByName('cantidad').value:= query.FieldByName('cantidad').Value; ClientDataSet1.FieldByName('precio').value:= query.FieldByName('precio').Value; ClientDataSet1.FieldByName('importe').value:= query.FieldByName('importe').Value; ClientDataSet1.Post; begin if Key = #13 then begin Key := #0; Perform(WM_NEXTDLGCTL, 0, 0); end end; end
#11
Escrito 17 agosto 2012 - 02:25
Query.First; for i := 0 to Query.RecordCount do begin // Inserta en ClientDataset Query.Next; end;
Saludox !

#12
Escrito 20 agosto 2012 - 12:20
procedure TForm4.folioKeyPress(Sender: TObject; var Key: Char); var i:integer; begin if Key = #13 then begin query.Close; query.SQL.Text := 'select * from entradas where folio=:folio'; query.Params[0].Value := folio.Text; query.Open; Query.First; for i := 0 to Query.RecordCount do begin ClientDataSet1.Edit; ClientDataSet1.FieldByName('fecha').value:= query.FieldByName('fecha').Value; ClientDataSet1.FieldByName('codigo').value:= query.FieldByName('codigo').Value; ClientDataSet1.FieldByName('nombre').value:= query.FieldByName('nombre').Value; ClientDataSet1.FieldByName('cantidad').value:= query.FieldByName('cantidad').Value; ClientDataSet1.FieldByName('precio').value:= query.FieldByName('precio').Value; ClientDataSet1.FieldByName('importe').value:= query.FieldByName('importe').Value; ClientDataSet1.Post; Query.Next; end;
#13
Escrito 20 agosto 2012 - 12:23
ClientDataSet1.Edit;
La idea es editar el DataSet o insertar una nueva línea en cada iteración del ciclo ???

Saludox !

#14
Escrito 20 agosto 2012 - 12:25

#15
Escrito 20 agosto 2012 - 12:47
1. ZQuery llamado Query
2. ClientDataSet llamado CDSDatos
3. DataSetprovider llamado Prov
4. DataSource llamado dsDatos
5. DBGrid llamado Grid
La relación entre ellos es:
1. Prov en su propiedad DataSet -> Query
2. CDSDatos en su propiedad Provider -> Prov
3. dsDatos en su propiedad DataSet -> CDSDatos
4. Grid en su propiedad DataSource -> dsDatos
Coloqué un botón que manda llamar el siguiente código...
procedure TFormulario2.Button1Click(Sender: TObject); var i: Integer; begin cdsDatos.Open; Query.Close; Query.ParamByName('cobo').AsString := ' 1145624'; Query.Open; Query.First; for i := 0 to Query.RecordCount - 1 do begin cdsDatos.Append; cdsDatos.FieldByName('num_cobo').AsString := Query.FieldByName('num_cobo').AsString; cdsDatos.FieldByName('num_fact').AsString := Query.FieldByName('num_fact').AsString; cdsDatos.Post; Query.Next; end; end;
Y no tengo ningún problema en visualizar mis facturas en el Grid... algo no estamos haciendo bien por ahí... revísalo sale ? y nos comentas...

Saludox !

#16
Escrito 20 agosto 2012 - 01:06




#17
Escrito 20 agosto 2012 - 02:06


Saludox !

#18
Escrito 20 agosto 2012 - 02:43
procedure TForm4.folioKeyPress(Sender: TObject; var Key: Char); var i:integer; begin if Key = #13 then begin ClientDataSet1.Open; query.Close; query.SQL.Text := 'select * from entradas where folio=:folio'; query.Params[0].Value := folio.Text; query.Open; Query.First; for i := 0 to Query.RecordCount - 1 do begin ClientDataSet1.Append; ClientDataSet1.FieldByName('fecha').value:= query.FieldByName('fecha').Value; ClientDataSet1.FieldByName('codigo').value:= query.FieldByName('codigo').Value; ClientDataSet1.FieldByName('nombre').value:= query.FieldByName('nombre').Value; ClientDataSet1.FieldByName('unidad').value:= query.FieldByName('unidad').Value; ClientDataSet1.FieldByName('cantidad').value:= query.FieldByName('cantidad').Value; ClientDataSet1.FieldByName('precio').value:= query.FieldByName('precio').Value; ClientDataSet1.FieldByName('importe').value:= query.FieldByName('importe').Value; ClientDataSet1.Post; Query.Next; end; begin if Key = #13 then begin Key := #0; Perform(WM_NEXTDLGCTL, 0, 0) end end; end end;