Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism Datagrid (https://www.delphipraxis.net/50422-datagrid.html)

HomerGER 25. Jul 2005 15:41


Datagrid
 
Hallo
wie kann ich den Inhalt meines Datagrid löschen bzw clear?

Delphi-Quellcode:
//Style DataGrid übergeben
DataGrid1.TableStyles.Clear;
DataGrid1.TableStyles.Add(style1);

//Daten übergeben
DataGrid1.DataSource := g_c_medien_dt;
ich habe den Code in einer Mdi Form
immer wenn ich die Form aufrufe hängt er die daten nur hinten dran


DataGrid1.DataSource := NIL;
DataGrid1.DataBindings.Clear;
bringt keinen Erfolgt



Hat jemand weisheit?

r_kerber 25. Jul 2005 16:51

Re: Datagrid
 
Du mußt nicht das DataGrid leeren sondern die DataSource (g_c_medien_dt), bzw. einzelne Tabellen da drin! In etwa so:
Delphi-Quellcode:
    if ((dataset1.Tables <> NIL) AND
       (dataset1.Tables.Contains('tabelle')))
       THEN dataset1.Tables['tabelle'].Clear();

HomerGER 25. Jul 2005 19:34

Re: Datagrid
 
Hallo
ich dachte ich könnte den Inhalt im Datagrid löschen ohne mein Dataset oder Datatable anzufassen
weil sonst mus ich den Inhalt wieder neu reinladen
ich lade aber nur einmal - Beim OnLoad

warum löscht er denn nicht den Inhalt wenn DataGrid.DataSource NIL zu weise?

r_kerber 25. Jul 2005 19:46

Re: Datagrid
 
Das ist ähnlich wie beim DBGrid, es wird der Inhalt das Datasets angezeigt!

HomerGER 25. Jul 2005 21:51

Re: Datagrid
 
das hilft aber nicht weiter
wenn ich der datasource NIL zuweise sollte das DataGrid nix anzeigen
und nicht bei neuen zuweisen der datasource alle daten nur dranhängen.

Robert_G 25. Jul 2005 22:07

Re: Datagrid
 
Zitat:

Zitat von HomerGER
das hilft aber nicht weiter
wenn ich der datasource NIL zuweise sollte das DataGrid nix anzeigen
und nicht bei neuen zuweisen der datasource alle daten nur dranhängen.

Macht es doch gar nicht. ;)
Du hast sicher einfach nur Werte an deine Daten angehängt, das Grid stellt die Daten in der Source dar, nicht mehr und nicht weniger. ;)

HomerGER 26. Jul 2005 07:33

Re: Datagrid
 
ich glaube nicht das ich werte dranhänge

hier mal ein bisschen Code

Ich habe eine Parent Form
hier wird bei OnLoad
das ausgeführt
Delphi-Quellcode:
Procedure Medien_DA_Erzeugen_DBC();
var
sel_s : String;
upd_cmd : OleDbCommand;
upd_par : OleDbParameter;
ins_cmd : OleDbCommand;
ins_par : OleDbParameter;
del_cmd : OleDbCommand;
del_par : OleDbParameter;
begin

//Select
  //Select String
  sel_s := 'SELECT * FROM GFC_Medien';

  //Daten aus der DB holen
  g_c_medien_da := OleDbDataAdapter.Create(sel_s, gf_conn);

//Update
  //Update Command
  upd_cmd := OleDbCommand.Create();
  upd_cmd.CommandType := CommandType.StoredProcedure;
  upd_cmd.CommandText := 'GFC_M_UPDATE';
  upd_cmd.Connection := gf_conn;

  upd_cmd.Parameters.Clear;
  upd_cmd.Parameters.Add('@GFC_M_NAME', OleDbType.VarWChar, 100, 'GFC_M_NAME');
  upd_cmd.Parameters.Add('@GFC_M_AKTIV', OleDbType.Boolean, 1, 'GFC_M_AKTIV');
  upd_cmd.Parameters.Add('@GFC_M_OUT', OleDbType.Boolean, 1, 'GFC_M_OUT');
  upd_cmd.Parameters.Add('@GFC_M_USER_NAME', OleDbType.VarWChar, 50, 'GFC_M_USER_NAME');
  upd_cmd.Parameters.Add('@GFC_M_USER_TXT', OleDbType.LongVarWChar, 16, 'GFC_M_USER_TXT');
  upd_cmd.Parameters.Add('@GFC_M_USER_DATE', OleDbType.DBTimeStamp, 4, 'GFC_M_USER_DATE');

  upd_par := upd_cmd.Parameters.Add('@ID', OleDbType.Integer);
  upd_par.SourceColumn := 'ID';
  upd_par.SourceVersion := DataRowVersion.Current;

//Insert
  //Insert Command
  ins_cmd := OleDbCommand.Create();
  ins_cmd.CommandType := CommandType.StoredProcedure;
  ins_cmd.CommandText := 'GFC_M_INSERT';
  ins_cmd.Connection := gf_conn;

  ins_cmd.Parameters.Clear;
  ins_cmd.Parameters.Add('@GFC_M_NAME', OleDbType.VarWChar, 100, 'GFC_M_NAME');
  ins_cmd.Parameters.Add('@GFC_M_AKTIV', OleDbType.Boolean, 1, 'GFC_M_AKTIV');
  ins_cmd.Parameters.Add('@GFC_M_OUT', OleDbType.Boolean, 1, 'GFC_M_OUT');
  ins_cmd.Parameters.Add('@GFC_M_USER_NAME', OleDbType.VarWChar, 50, 'GFC_M_USER_NAME');
  ins_cmd.Parameters.Add('@GFC_M_USER_TXT', OleDbType.LongVarWChar, 16, 'GFC_M_USER_TXT');
  ins_cmd.Parameters.Add('@GFC_M_USER_DATE', OleDbType.DBTimeStamp, 4, 'GFC_M_USER_DATE');

  ins_par := ins_cmd.Parameters.Add('@Identity', OleDbType.Integer, 4, 'ID');
  ins_par.Direction := System.Data.ParameterDirection.Output;
  ins_par.SourceColumn := 'ID';
  ins_par.SourceVersion := DataRowVersion.Current;

//Delete
  //Delete Command
  del_cmd := OleDbCommand.Create();
  del_cmd.CommandType := CommandType.StoredProcedure;
  del_cmd.CommandText := 'GFC_M_DELETE';
  del_cmd.Connection := gf_conn;

  del_cmd.Parameters.Clear;
  del_par := del_cmd.Parameters.Add('@ID', OleDbType.Integer, 4, 'ID');
  del_par.SourceColumn := 'ID';
  del_par.SourceVersion := DataRowVersion.Original;

  //Commands übergeben
  g_c_medien_da.UpdateCommand := upd_cmd;
  g_c_medien_da.InsertCommand := ins_cmd;
  g_c_medien_da.DeleteCommand := del_cmd;

  //Daten ins Dataset
  gf_conn.Open;
  g_c_medien_da.Fill(g_c_dataset_ds, 'GFC_Medien');
  gf_conn.Close;

  //DataTable laden
  g_c_medien_dt := g_c_dataset_ds.Tables['GFC_Medien'];
end;
in der Mdi Form
als erstes alle Mdi Form close
dann auch hier im OnLoad
Delphi-Quellcode:
Procedure DataGrid1_Binden_C1();
var
style1 : DataGridTableStyle;
textboxcol1 : DataGridTextBoxColumn;
textboxcol2 : DataGridTextBoxColumn;
textboxcol3 : DataGridTextBoxColumn;
textboxcol4 : DataGridTextBoxColumn;
begin
  //DataGrid löschen
  C1.DataGrid1.DataSource := NIL;
  C1.DataGrid1.DataBindings.Clear;

  //Style1 erzeugen
  style1 := DataGridTableStyle.Create;
  style1.MappingName := 'GFC_Medien';
  style1.RowHeaderWidth := 10;

  //Style1 Farbe
  style1.AlternatingBackColor := System.Drawing.Color.LightSteelBlue;

  //TextCol1 GFC_M_ID
  textboxcol1 := DataGridTextBoxColumn.Create;
  textboxcol1.MappingName := 'GFC_M_ID';
  textboxcol1.HeaderText := 'Nr.';
  textboxcol1.Width := 50;

  //TextCol2 GFC_M_NAME
  textboxcol2 := DataGridTextBoxColumn.Create;
  textboxcol2.MappingName := 'GFC_M_NAME';
  textboxcol2.HeaderText := 'Name';
  textboxcol2.Width := 300;

  //TextCol3 GFC_M_USER_NAME
  textboxcol3 := DataGridTextBoxColumn.Create;
  textboxcol3.MappingName := 'GFC_M_USER_NAME';
  textboxcol3.HeaderText := 'geändert von';
  textboxcol3.Width := 200;

  //TextCol4 GFC_M_USER_DATE
  textboxcol4 := DataGridTextBoxColumn.Create;
  textboxcol4.MappingName := 'GFC_M_USER_DATE';
  textboxcol4.HeaderText := 'geändert am';
  textboxcol4.Width := 120;

  //Zum Style hinzufügen
  style1.GridColumnStyles.Clear;
  style1.GridColumnStyles.Add(textboxcol1);
  style1.GridColumnStyles.Add(textboxcol2);
  style1.GridColumnStyles.Add(textboxcol3);
  style1.GridColumnStyles.Add(textboxcol4);

  //Style DataGrid übergeben
  C1.DataGrid1.TableStyles.Clear;
  C1.DataGrid1.TableStyles.Add(style1);

  //Daten übergeben
  C1.DataGrid1.DataSource := g_c_medien_dt; <---------------------------

wenn ich jetzt das erstmal die Mdi öffne, ist alles Ok, es stehen im Datagrid 10 datensätze
schliesse ich sie wieder und öffne sie neu, stehen im DataGrid jetzt 20 datensätze
beim nächsten öfnen 30 usw.

er hängt immer wieder nur die datensätze an das Grid an

HomerGER 26. Jul 2005 07:46

Re: Datagrid
 
Asche auf mein Haupt
Natürlich hast du recht gehabt
war ein bischen eingefahren
in der Function um alle Mdi zu schliesen war ein Aufruf die Daten neu einzulesen
damit hat er sie immer neu ins dataset drangehängt


Vielen Dank für den Tritt in den Hintern :mrgreen:
manchmal hilft es

Homer

Robert_G 26. Jul 2005 08:09

Re: Datagrid
 
Warum benutzt du überhaupt .Net? :gruebel:
Dein Code sieht aus, als ob du dbExpress in Win32 benutzt, außerdem hast du lose Prozeduren und Globale Variablen.
Das da ist IMHO kein .Net Code, und wenn man so programmiert brngt einem .Net keinerlei Vorteile gegenüber der Win32 VCL, die ja mehr auf solche Quick'nDirty Sachen ausgelegt ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz