AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit Datensatz speichern

Problem mit Datensatz speichern

Ein Thema von Borschti · begonnen am 20. Aug 2008 · letzter Beitrag vom 12. Sep 2008
Antwort Antwort
Seite 1 von 2  1 2   
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#1

Problem mit Datensatz speichern

  Alt 20. Aug 2008, 09:40
Datenbank: ADS • Version: 8.1 • Zugriff über: kp
Hallo,

ich habe ein Problem mit dem Speichern von änderungen in einer Query.

Also ich habe eine Query welche normal per SQL Statement gefüllt wird und Später in einem StringGrid ausgegeben wird. Ich benutze ein StringGrid wegen der einfachen durchnummerierung der Datensätze, falls jemand weiß ob man das in einem DBGrid einfach so einstellen kann wäre ich sehr dankbar wenn er mir verraten würde wie das geht, das aber nur so nebenbei.

Also sobald dann etwas in dem StringGrid verändert wird sollen die Geänderten Datensätze in eine Tabelle geschrieben werden bzw. die Datensätze in die Tabelle zurückgeschrieben werden aus der ich sie auch per SQL STatement geholt habe.
Hier liegt jetzt aber mein Problem, ich bekomme eine Fehlermeldung: "In eine Datenmenge die nur zum lesen geeignet ist kann nicht geschrieben werden" oder sowas in der Art, aber der grobe Inhalt sollte so stimmen.

Ich habe gedacht das ich das einfach so machen kann:

Delphi-Quellcode:
    for i := 1 to VisiStringGrid1.RowCount do
      begin
        for z := 1 to sl.Count do
          begin
            VddQuery3.Edit;
            VddQuery3.FieldByName(sl[z]).asString := VisiStringGrid1.Cells[i,z];
            VddQuery3.Post;
          end;
      end;
Also das ich das gesamte StringGrid wegschreibe nachdem etwas verändert wurde (hier besteht sicherlich noch bearbeitungsbedarf, es sollte aber hauptsache erstmal irgendwas weggeschrieben werden).

Nur, wie gesagt, klappt das nicht so wirklich.

Weiß vielleicht jemand Rat?

mfg
Alex
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit Datensatz speichern

  Alt 20. Aug 2008, 09:48
Du könntest ein berechnetes Feld verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Problem mit Datensatz speichern

  Alt 20. Aug 2008, 09:49
um das zu vereinfachen, nimm lieber ein dbgrid
und verbinde es mit dem Dataset.
Wenn der Dataset neu eingelesen wird, aktualisiert sich auch dein grid.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Problem mit Datensatz speichern

  Alt 20. Aug 2008, 09:53
Ja das ist mir schon klar @ Privateer3000

Ich hab ja kein Problem damit das sich das Grid nicht aktualisiert, sondern das ich keine Werte in eine .ads Tabelle speichern kann

Wie geht das mit den Berechneten Feldern und was bringen sie mir für einen Vorteil, hab grad mal etwas nach gestöbert aber wie sollen sie mir bei dem Problem mit dem Wegschreiben der Datensätze in eine .ads Tabelle helfen?

mfg
Alex
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Problem mit Datensatz speichern

  Alt 20. Aug 2008, 10:05
Mit dem berechneten Feld könntest du die Nr realisieren
Markus Kinzler
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Problem mit Datensatz speichern

  Alt 20. Aug 2008, 10:24
Achso

Ja, das wär nicht schlecht, werd ich mir mal anschaun wenn ich wirklich auf ein DBGrid umsteigen sollte. Danke.

Aber meine Eingangsfrage ist leider noch offen, hoffe auf weitere Hilfe, danke schonmal im vorraus

mfg
Alex
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Problem mit Datensatz speichern

  Alt 20. Aug 2008, 10:26
Das Problem mit dem Update erledigt sich beim Einsatz des DBGrids.
Markus Kinzler
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Problem mit Datensatz speichern

  Alt 20. Aug 2008, 11:03
Hmm also erstmal danke für die Antworten, Ich habe es jetzt wieder auf ein DBGrid umgestellt habe aber jetzt wieder das gleiche Problem, "Eine Datenmenge, die nur zum Lesen ist, kann nicht geändert werden."
Der Fehler tritt auf sobald ich Werte in das calculated field schreiben will, das mache ich so:

Delphi-Quellcode:
  for i := 0 to Query.RecordCount - 1 do
    begin
      Query.Edit;
      Query.FieldByName('DatensatzNr').asInteger := i;
    end;
Habe ich vielleicht was vergessen?

mfg
Alex
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Problem mit Datensatz speichern

  Alt 20. Aug 2008, 11:07
Wie sieht die Abfrage aus? was willst du hier editieren?
Markus Kinzler
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Problem mit Datensatz speichern

  Alt 20. Aug 2008, 11:14
Also so setze ich meine Abfrage zusammen:

Delphi-Quellcode:
SQL := 'Select packpf.AdrNr, packpf.BelegNr, packpf.Tour, packpf.Liefertermin,';
  SQL := SQL + ' pacpos.ID, pacpos.Lagerort, pacpos.Platz, pacpos.Anzahl, pacpos.Istmenge,';
  SQL := SQL + ' pacpos.Sollmenge, pacpos.Restmenge, pacpos.Artnr, packpf.Activ, packpf.BelegartID,';
  SQL := SQL + ' packpf.Datum, pacpos.belegnr,';
  SQL := SQL + ' pacpos.Summeanzahl, pacpos.Reihenfolge, pacpos.Einheit';
  SQL := SQL + ' from packpf inner join pacpos on packpf.belegnr = pacpos.belegnr';

  DateTime := DateTimeToStr(DateTimeP.DateTime);
  DTDay := Copy(DateTime, 1, 2);
  DTMonth := Copy(DateTime, 4, 2);
  DTYear := Copy(DateTime, 7, 4);
  DTTIme := '00:00:00.000';

  DTGes := DTMonth+ '/' + DTDay + '/' + DTYear + ' ' + DTTime;

  SQL := SQL + ' WHERE(packpf.Activ = '+QuotedStr('o')+') and (packpf.Tour = '+QuotedStr(ComboBox.Items[ComboBox.ItemIndex])+') and (packpf.Liefertermin = convert('+QuotedStr(DTGes)+', sql_timestamp))';

  case RadioGroup.ItemIndex of
    0: SQL := SQL + ' Order by packpf.Tour, pacpos.Lagerort, pacpos.Platz, pacpos.artnr ';
    1: SQL := SQL + ' Order by packpf.Tour, pacpos.ArtNr';
    2: SQL := SQL + ' Order by packpf.Tour, packpf.AdrNr, pacpos.ArtNr';
  end;

  Query.SQL.Add(SQL);
  Query.Open;
Mit dem Code in meinem vorherigen Post will ich Felder meines berechneten Feldes füllen, will aber halt nicht wirklich

Edit: ReadOnly der Query steht auf False

mfg
Alex
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:43 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