Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO, Access und das alles vergleichen (https://www.delphipraxis.net/26220-ado-access-und-das-alles-vergleichen.html)

motu 20. Jul 2004 14:36


ADO, Access und das alles vergleichen
 
Hallo,

ich habe ein Programm, das bisher über ADO neue Datensätze in eine AccessDB einfügt. Nun ist gefordert, das vor dem Eintrag in der DB geschaut wird, ob ein ähnlicher Datensatz schon vorhanden ist. Wenn ja, soll er angezeigt werden und auf Wunsch überschrieben werden.

Vorschläge?

Stevie 20. Jul 2004 14:39

Re: ADO, Access und das alles vergleichen
 
Ein DataSet mit dem passenden SQL, wenn Satz gefunden, dann ändern... :gruebel:

motu 20. Jul 2004 14:44

Re: ADO, Access und das alles vergleichen
 
:wiejetzt:
also det SQL-Statement krieg ich ja noch hin, aber zu allem anderen bin ich heut kognitiv nicht mehr fähig und generell sind meine Delphifähigkeiten für deine Aussage nicht ausgeprägt genug.

Zu deutsch: Schön wär der fertige Code. :roll:

Stevie 20. Jul 2004 14:51

Re: ADO, Access und das alles vergleichen
 
Ein ADODataSet auf's Form usw...
Delphi-Quellcode:
try
  ADODataSet1.CommandText := 'SELECT hier, dort FROM irgendwas WHERE dies AND das';
  ADODataSet1.Open;
  if ADODataSet1.RecordCount > 0 then
  begin
    ADODataSet1.Edit;
    ADODataSet1.FieldValues['hier'] := 'irgendwas';
    ADODataSet1.FieldValues['dort'] := 'irgendwas anderes';
    ADODataSet1.Post;
  end;
finally
  ADODataSet1.Close;
end;

motu 20. Jul 2004 14:56

Re: ADO, Access und das alles vergleichen
 
Des sieht doch jut aus. :-D
Danke erst einmal. Ich versuch das grad mal ein bisschen anzupassen.

Stevie 20. Jul 2004 14:58

Re: ADO, Access und das alles vergleichen
 
Oh, btw... HERZLICH WILLKOMMEN IN DER :dp: :hi:

motu 20. Jul 2004 15:08

Re: ADO, Access und das alles vergleichen
 
Hmm. Habe grad gemerkt, das ich gar kein DataSet habe, bisher ging alles über ADOTable.
Da muß ich wohl noch eins reinbasteln.

Aber mir ist eingefallen, wie kann ich denn den Output in einer Messagebox ausgeben?

Aber jetzt jeh ick erstmal heeme. bis morgen.

motu 21. Jul 2004 07:11

Re: ADO, Access und das alles vergleichen
 
Nun stellt sich die Frage, wie bekomme ich meine Variablen in den SQL Ausdruck, und wie kann ich, sofern es passende Datensätze gibt, diese dem Nutzer anzeigen?

shmia 21. Jul 2004 07:32

Re: ADO, Access und das alles vergleichen
 
Zitat:

Zitat von motu
Nun stellt sich die Frage, wie bekomme ich meine Variablen in den SQL Ausdruck, und wie kann ich, sofern es passende Datensätze gibt, diese dem Nutzer anzeigen?

Damit dies sauber funktioniert brauchst du ein (oder mehrere) Primärschlüsselfeld (z.B. Kundennummer).
So wird ein Datensatz eindeutig identifiziert.
Delphi-Quellcode:
  ADOQuery1.SQL.Text := 'SELECT * FROM Tabelle WHERE pkeyfeld=:pkeyfeld';
  ADOQuery1.Parameters.ParamValues['pkeyfeld'] := akt_pkey;
  ADOQuery1.Open;
  // die Abfrage kann entweder leer sein oder liefert genau 1 Datensatz
  if ADOQuery1.IsEmpty then
  begin
    // neuen Datensatz einfügen
    ADOQuery1.Insert;
    ADOQuery1.FieldValues['pkeyfeld'] := akt_pkey;
    ADOQuery1.FieldValues['Feld2'] := 'irgendwas anderes';
    ADOQuery1.Post;
  end
  else
  begin
     // form2 ist ein Hilfsformular, dass die Datenfelder eines Datensatzen anzeigt
     // der Benutzer kann entweder OK oder Abbrechen klicken
     form2.Dataset := ADOQuery1;
     if form2.ShowModal = mrOK then
     begin
       // bestehender Datensatz überschreiben
       ADOQuery1.Edit;
       // alle Felder bestücken mit Ausnahme des pkeyfeld
       ADOQuery1.FieldValues['Feld2'] := 'irgendwas anderes';
       ADOQuery1.Post;
     end
     else
        ShowMessage('Daten wurde nicht überschrieben'); // später weglassen
  end;
  ADOQuery1.Close;

motu 21. Jul 2004 07:40

Re: ADO, Access und das alles vergleichen
 
Danke, aber geht auch ohne Schlüssel? Ich hab zwar einen, aber den kann ich nicht benutzen.
Es sollen Werte in zwei Spalten gesucht werden. In einer Spalte der genaue Werte in der anderen mit einer Toleranz von 10% (SQL-Statement hab ich schon). Wenn dem so ist soll der geasamte Datensatz angezeigt werden, mit der Option des überschreibens, ansonsten soll ein neuer hinzugefügt werden. Das Einfügen haben wir ja schon. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr.
Seite 1 von 2  1 2      

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