AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensatzfeld BEIM speichern wieder abfragen

Datensatzfeld BEIM speichern wieder abfragen

Ein Thema von Overclocker · begonnen am 22. Mai 2008 · letzter Beitrag vom 24. Mai 2008
Antwort Antwort
Seite 2 von 2     12
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: Datensatzfeld BEIM speichern wieder abfragen

  Alt 23. Mai 2008, 06:11
Moin,

ich würde den eingebauten Schlüsselgenerator (AUTOINC) eines DBMS nicht einfach so verdammen.

Wenn der Datensatz per ADODataSet hinzugefügt wird, dann hat der Treiber den vom DBMS vergebenen Schlüssel ja vielleicht im Record-Buffer hinterlegt.
Ein Zugriff per ADODataSet.FieldByName('ID').Integer beim Event AfterPost() sollte das zeigen.

Freundliche Grüße
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Datensatzfeld BEIM speichern wieder abfragen

  Alt 23. Mai 2008, 11:29
Hallo,

1

der 1. reply.

Viell. hilft es ja.

Ansonsten such mal in Google nach "Access AutoNumber"


Heiko
Heiko
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#13

Re: Datensatzfeld BEIM speichern wieder abfragen

  Alt 23. Mai 2008, 15:02
@marabu:der datensatz wird mit nem ADO Command eingefügt, mit dem geht es wohl nicht oder?

hmmm scheint doch alles komplizierter zu sein als gedacht
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#14

Re: Datensatzfeld BEIM speichern wieder abfragen

  Alt 23. Mai 2008, 15:18
Wer zwingt dich denn einen Satz per Command einzufügen?

Probiere das einfach mal aus und entscheide dann:

Delphi-Quellcode:
var
  id: Cardinal;
begin
  // ...
  with ADODataSet do
  begin
    Append;
    // FieldByName['SOME_FIELD'].AsInteger := Random(10);
    Post;
    id := FieldValues['ID'];
  end;
end;
Vielleicht findest du noch eine bessere Lösung.
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#15

Re: Datensatzfeld BEIM speichern wieder abfragen

  Alt 23. Mai 2008, 16:12
wie meinst du das mit zwingt *g+??

es zwingt mich keiner, ich versuch das mal mit deinem code aber erstmal nachlesen alles weil ich nur hobbyprogrammierer bin und noch viel lernen muss^^
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#16

Re: Datensatzfeld BEIM speichern wieder abfragen

  Alt 23. Mai 2008, 17:08
ok ich hab den baum vor lauter bäume gesehen

wieso kompliziert machen wenns auch einfach geht

ich mach einfach n insert mit nem normalen command

füg noch ne datasource auf die form, mach nen qry (select * from xy)

datasource1.dataset.last;

datasource1.dataset.fieldbyname('ID').asinteger;

und schon habe ich die ID die ich brauche, wunderbar )))

somit - closed -
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#17

Re: Datensatzfeld BEIM speichern wieder abfragen

  Alt 23. Mai 2008, 19:03
Hallo,

das funktioniert nur zuverlässig, wenn keine konkurrierenden Zugriffe erfolgen (exclusive mode).

Und selbst dann solltest du es zumindest noch optimieren:

SELECT MAX(ID) FROM YOUR_TABLE Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#18

Re: Datensatzfeld BEIM speichern wieder abfragen

  Alt 24. Mai 2008, 08:57
Zitat von Overclocker:
1. Tabelle: --> Userdaten
2. Tabelle: --> Infos


Wenn ich einen Useranlege, wird die Userid automatisch angelegt (also AUTOWERT).
Gleichzeitig möchte ich beim Speichern dieses Users in die Tabelle Infos auch einen "leeren" Datensatz speichern, wo bereits diese Userid vorhanden ist.
Nur mal so aus Neugierde gefragt: Was macht es denn für einen Sinn einen leeren Datensatz in Infos zu hinterlegen
Gehst du den dann auch wieder löschen/ändern beim ersten richtigen Einfügen eines DS in Infos
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#19

Re: Datensatzfeld BEIM speichern wieder abfragen

  Alt 24. Mai 2008, 11:48
Optimieren mit Max(ID) bringt aber meiner meinung nach auch nichts.

sagen wir mal es speichern 2 Leute GLEICHZEITIG den User ab. dann bringt das max genauso nichts weil ich ja mit dataset.last sowieso den letzten Datensatz markieren (der auch wiederum die größte ID hat).

ich werd das mal testen, eigentlich müsste es da keine probleme geben weil die befehle ja innerhalb von ms ausgeführt werden und dass so ein zufall eintritt, da ist die warscheinlichkeit schon sehr niedrig.

aber ich schau mir das mal an danke für den hinweis
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#20

Re: Datensatzfeld BEIM speichern wieder abfragen

  Alt 24. Mai 2008, 12:21
Ist es möglich, dass du mich falsch verstanden hast?

Ich hatte zwei Aussagen gemacht:

(A) Eine notwendige Voraussetzung für ein zuverlässiges Funktionieren deines Ansatzes ist der Single User Modus.

(B) Ist die Voraussetzung gegeben, dann kannst du den Vorgang optimieren, indem du nicht die die ganze Tabelle mit allen Spalten durch die Record Buffer scheuchst, sondern nur auf das eine interessante Feld des richtigen Datensatzes zugreifst.

Bei dir scheint A UND B angekommen zu sein, ich habe aber WENN A DANN B gemeint.

Wenn du konkurrierende Zugriffe nicht ausschließen willst oder kannst, dann darfst du dich nicht mit Annahmen über die Wahrscheinlichkeit eines fehlerhaften Zugriffs trösten. Fehler bei der Umsetzung einer Idee können vorkommen, ein fehlerhaftes Konzept sollte man aber garnicht erst implementieren.
  Mit Zitat antworten Zitat
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 02:40 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