Thema: Prism Datagrid

Einzelnen Beitrag anzeigen

Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#7

Re: Datagrid

  Alt 26. Jul 2005, 07:33
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
  Mit Zitat antworten Zitat