AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid-Problem

Ein Thema von Impulz · begonnen am 6. Dez 2011 · letzter Beitrag vom 6. Dez 2011
Antwort Antwort
Impulz

Registriert seit: 19. Aug 2011
Ort: Lübeck
68 Beiträge
 
Delphi 7 Professional
 
#1

StringGrid-Problem

  Alt 6. Dez 2011, 08:44
Delphi-Version: 7
Guten Tag,
Erstmal zu meinem Projekt:

Ich habe eine Datenbank mit Kunden,Autoren,Büchern usw. (IBExpert) und habe eine Datenbankoberfläche die ich in Delphi 7 schreibe.
Die Datenbank wird abgerufen und die Daten werden in einem ListView angezeigt. Auf diesem ListView kann man per Rechtsklick Bearbeiten und Löschen der einzelnden Datensätze ausführen, dabei öffnet sich ein Pop-Up Fenster mit einem StringGrid wo dann die ausgewählte Zeile angezeigt wird.
Dort Editiere ich die Daten und reiche diese an den ListView zurück. Soweit so gut.
Doch nun:

Wieso werden die Daten UNTER die alten daten geschrieben????

(BSP: ID Vorname Nachname
1 Max Mustermann
BEARBEITEN:
1 Martin Mustermann
nach dem bearbeiten------>
ID Vorname Nachname
1 Max Mustermann
wenn ich jetzt auf LÖSCHEN gehe.. steht da:

1 Martin Mustermann


Vielen dank schonmal
Danil
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: StringGrid-Problem

  Alt 6. Dez 2011, 08:47
Anscheinend machst Du etwas falsch. Mehr kann ich anhand der Fülle des geposteten Codes allerdings nicht dazu sagen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Impulz

Registriert seit: 19. Aug 2011
Ort: Lübeck
68 Beiträge
 
Delphi 7 Professional
 
#3

AW: StringGrid-Problem

  Alt 6. Dez 2011, 08:51
so siehts im Bearbeiten klich aus:

Code:
rocedure TStartseite.Bea1click(Sender:TObject);
var
  Kunde :Tkunde;
  neuKunde:TKunde;
  neuItem: TListItem;
  Sendung :TSendung;
  neuSendung:TSendung;
  Autor :TAutor;
  neuAutor:TAutor;
  Buch :TBuch;
  neuBuch:TBuch;

begin
  if (rgAuswahl.ItemIndex = 0) then
  begin
    Kunde:= TKunde(lvAuswahl.ItemFocused.SubItems.Objects[1]);
    Dateneditieren.giveKundeDataToGrid(Kunde);
    if IsPositiveResult(Dateneditieren.ShowModal()) then
    begin
      Kunde:= TKunde (Dateneditieren.StrGrAuswahl.Objects[1,2]);
      neuKunde:=TKunde(lvAuswahl.ItemFocused.SubItems.Objects[0]);
      kunde:= neuKunde.Create(neuKunde.ID,neuKunde.Vorname,neuKunde.Nachname);
      lvAuswahl.ItemFocused.SubItems.Add(Dateneditieren.StrGrAuswahl.Cells[1,1]);
      lvAuswahl.ItemFocused.SubItems.Add(Dateneditieren.StrGrAuswahl.Cells[2,1]);
      neuKunde:=TKunde.Create(Kunde.ID,(Dateneditieren.StrGrAuswahl.Cells[1,1]),kunde.nachname);
      neuKunde:=Tkunde(Dateneditieren.StrGrAuswahl.Cells[2,1]);
      connect.KundeTransa.StartTransaction;
      connect.KundeTransa.Commit;
      connect.KundeQuery.CommitUpdates;
    end else
    begin
    IsNegativeResult(Dateneditieren.ShowModal())
    end;
  end else
  if (rgAuswahl.ItemIndex = 1) then
  begin
    sendung:= TSendung(lvAuswahl.ItemFocused.SubItems.Objects[0]);
    Dateneditieren.giveSendungDataToGrid(Sendung);
    if IsPositiveResult(Dateneditieren.ShowModal()) then
    begin
      Sendung:= TSendung (Dateneditieren.StrGrAuswahl.Objects[1,2]);
      neuSendung:=TSendung(lvAuswahl.ItemFocused.SubItems.Objects[0]);
      Sendung:= neuSendung.Create(neuSendung.ID,neuSendung.Status,neuSendung.Rechnung);
      lvAuswahl.ItemFocused.SubItems.Add(Dateneditieren.StrGrAuswahl.Cells[1,1]);
      lvAuswahl.ItemFocused.SubItems.Add(Dateneditieren.StrGrAuswahl.Cells[2,1]);
      neuSendung:=TSendung.Create(Sendung.ID,(Dateneditieren.StrGrAuswahl.Cells[1,1]),Sendung.Rechnung);
      neuSendung:=TSendung(Dateneditieren.StrGrAuswahl.Cells[2,1]);
    end else
    begin
    IsNegativeResult(Dateneditieren.ShowModal())
    end;
SO bei der Kundenerstellung:

Code:
function TDataconnect.getKunden():TKundeList;
begin
  Result:= TKundeList.create();
  KundeQuery:= TIBOQuery.Create(nil);
  KundeQuery.SQL.Text:= 'SELECT * FROM KUNDEN ';
  KundeQuery.IB_Connection:= FDataBase;
  KundeTransa:= TIBOTRansaction.Create(nil);
  KundeTransa.IB_Connection:= FDataBase;
  KundeQuery.IB_Transaction:= KundeTransa;
  KundeTransa.StartTransaction();
  try
    KundeQuery.Open();
    while not KundeQuery.Eof do
    begin
      kunde:= TKunde.Create(KundeQuery.Fieldbyname('Kunden_ID').asInteger,
                            KundeQuery.FieldbyName('Vorname').asString,
                            KundeQuery.FieldbyName('nachname').AsString);
      Result.addkunde(Kunde);
      KundeQuery.Next();
    end;
    KundeTransa.Commit();
  except
    on e:Exception do
    begin
      ShowMessage(e.Message);
      KundeTransa.Rollback();
    end;
  end;
end;
und so beim übergeben:

Code:
procedure TDatenEditieren.giveKundeDataToGrid(AKUnde:TKunde);
Begin
  StrGrAuswahl.Cells[0,1]:= IntToStr(Akunde.Id);
  StrGrAuswahl.Cells[1,1]:= AKUnde.Vorname;
  StrGrAuswahl.Cells[2,1]:=AKunde.Nachname;
end;



ich weüß nicht habe ich noch relevante stellen nicht aufgelistet? wenn ja füge ich welche hinzu
Danil
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

AW: StringGrid-Problem

  Alt 6. Dez 2011, 08:58
Zitat:
Delphi-Quellcode:
if IsPositiveResult(Dateneditieren.ShowModal()) then
    begin
      Kunde:= TKunde (Dateneditieren.StrGrAuswahl.Objects[1,2]);
      neuKunde:=TKunde(lvAuswahl.ItemFocused.SubItems.Objects[0]);
      kunde:= neuKunde.Create(neuKunde.ID,neuKunde.Vorname,neuKunde.Nachname);
      lvAuswahl.ItemFocused.SubItems.Add(Dateneditieren.StrGrAuswahl.Cells[1,1]);
      lvAuswahl.ItemFocused.SubItems.Add(Dateneditieren.StrGrAuswahl.Cells[2,1]);
      neuKunde:=TKunde.Create(Kunde.ID,(Dateneditieren.StrGrAuswahl.Cells[1,1]),kunde.nachname);
      neuKunde:=Tkunde(Dateneditieren.StrGrAuswahl.Cells[2,1]);
      connect.KundeTransa.StartTransaction;
      connect.KundeTransa.Commit;
      connect.KundeQuery.CommitUpdates;
    end else
Wozu die Zuweisungen an Kunde und neukunde, wenn Du diese anschließend mit neu angelegten Instanzen überschreibst (im Falle von neukunde dann anschließend sogar noch einmal mit einer bestehenden)? Ich habe das Gefühl, dass Du Dir eine ganze Menge Speicherlecks da einprogrammiert hast.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: StringGrid-Problem

  Alt 6. Dez 2011, 08:58
worauf bezieht sich "UNTER" ?

Gruß
K-H

Edit:
gefühlt ist es mit der Trennung von Daten und Darstellung auch nicht weit her.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 ( 6. Dez 2011 um 09:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: StringGrid-Problem

  Alt 6. Dez 2011, 09:03
DBDaten > ListView > StringGrid > ListView

Warum nicht so?
DBDaten > DBGrid <> eingebauter Editor


PS: Der Titel ist nicht grade aussagekräftig, bzw. rate mal wieviele Probleme mit irgendeiner Komponente haben und wie unübersichtlich es wäre, wenn alle nur XYZKomponente-Problem schreiben?

Und was hat das Problem mit dem StringGrid zu tun?
Ich hab es jetzt so verstanden, daß du Probleme in der ListView hast.



Ach ja, in Bea1click sieht es so aus, als wenn du bearbeitete Daten immer nur einfügst (Create/Add/...) und nirgendwo etwas "überschreibst".
$2B or not $2B
  Mit Zitat antworten Zitat
Impulz

Registriert seit: 19. Aug 2011
Ort: Lübeck
68 Beiträge
 
Delphi 7 Professional
 
#7

AW: StringGrid-Problem

  Alt 6. Dez 2011, 09:10
Hi,
erstmal vielen Dank,
habe ja schon probleme mit dem StringGrid, da es anscheinend die Daten nicht richtig weitergibt.

mein aufbau ist ja gerade DB-LV-SG-LV
ist doch schon so aufgebaut. der andere Gedanke meinerseits wäre sonst DB-LV-SG-DB würde sich soetwas lohnen?
Mit dem Titel hast du recht... sorry
Danil
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

AW: StringGrid-Problem

  Alt 6. Dez 2011, 09:12
Versuchen wir es doch einmal so: das Form2 bekommt eine Property vom Typ TKunde spendiert. Nun könnte man das in Form1 sinngemäß so machen:
Code:
var Kunde: TKunde;
if Bearbeiten then
  Kunde := aktueller_Kunde_in_ListView
else if Neuanlage then
  Kunde := TKunde.Create;
Form2.Kunde := Kunde;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Impulz

Registriert seit: 19. Aug 2011
Ort: Lübeck
68 Beiträge
 
Delphi 7 Professional
 
#9

AW: StringGrid-Problem

  Alt 6. Dez 2011, 10:08
Vielen Dank Detlef,

Habe gerade eine Lösung gefunden... Ich werde einfach eine Prozedur anlegen die den Kunden so Speichert (in der Datenbank) und dann das ListView einfach aktualisiert .

aber vielen Dank für euere Hilfe
Danil
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 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