![]() |
Kein Datensatz->Fehler abfangen & DBEdit zurückschrei
hallo,
wie kann ich die fehlermeldung abfangen, dass kein datensatz gefunden wird? oder besser gesagt wie kann ich selbst dann eine generieren? wenn ein datensatz gefunden wird, klappt alles super. so klappt es leider nicht:
Delphi-Quellcode:
weiterhin schreibt mein DBEdit die änderungen innerhalb des feldes nicht direkt in die db. habe das dbedit einfach mit datasource und datafield eingebunden. ausgelesen wird alles. muss man erst noch was einstellen?
try
ADODataSet1.CommandText := 'SELECT * FROM kunden WHERE KDNR='''+Edit2.Text+''';'; ADOConnection1.Connected := True; ADODataSet1.Active := True; except Label20.Caption := 'Fehler'; end; danke mfg tkliewe [edit=r_kerber]Delphi-Tags gesetzt. Mfg, r_kerber[/edit] |
Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc
Hallo,
mehrere Punkte ... (nein nicht diese) :-) Zitat:
und gar nicht hier in diesen Bereich öffnen gibt es irgendwelche Gründe warum keine ständige Verbindung vorhanden sein soll zweitens prüfe vorher über einen
SQL-Code:
ob überhaupt ein Kunde in der DB vorhanden ist, erst dann würde ich mit anderen Zuweisungen fortfahren .
SELECT Count(*) FROM kunden WHERE KDNR='123'
drittens dbedit Zitat:
wurde ein .Post durchgeführt, nachdem die Daten in dbedit geändert wurden ? |
Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc
hallo,
also die verbindung soll nicht von anfang an true sein, da später auf diese db von mehreren computern aus zugegriffen werden soll -> möglichst kurze verbindungen nur aufbauen Source:
SQL-Code:
also soll ich diesen sql-string als command-text einsetzen und nachher abfragen ob das ungleich 0 ist, oder wie ist das gemeint?
SELECT Count(*) FROM kunden WHERE KDNR='123'
.post wurde nicht ausgeführt. hab noch nie vorher auf ne access-db zugegriffen. wie bzw. an welchem objekt muss ich das ausführen. danke schonmal gruß tkliewe [edit=r_kerber]SQL-Tags gesetzt. Mfg, r_kerber[/edit] |
Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc
Hallo,
mitlerweile poste ich deine anliegen quer ... kann anstrengend werden (nicht für mich, für dich) Zitat:
warten irgendwann die anderen bei access ist es nicht so kritisch wie bei einen SQL-Server Zitat:
Delphi-Quellcode:
ADODataSet.Close;
ADODataSet.CommandText := Format (SELECT Count(*) as Anzahl FROM kunden WHERE KDNR='%s', Edit1.Text); ADODataSet.Open; n := ADOQuery.FieldByName('Anzahl').asInteger; if n > 0 then begin // huch ich habe eine Kunden end else begin // nichts gefunden end; Zitat:
Hier ist ein Beispiel beschrieben wie man sich in die Datenbank-Komponenten einarbeitet kann.
Delphi-Quellcode:
wenn Du den DBnavigator verwendest, dann wird das "häckchen" aktiv - dahinter verbirgt sich ein post
ADODataSet.Edit;
ADODataSet.FieldByName('KundenName').asString := 'daywalker-dj-k'; ADODataSet.Post; [edit=r_kerber]Code ind Delphi-Tags geändert. Mfg, r_kerber[/edit] |
Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc
Hi!
Also ich würds in etwa so lösen:
Delphi-Quellcode:
Dazu bauste noch ne RecordCount Variable ein und prüfst vorher ab ob > = 0 und gibst ne entsprechende Meldung aus.
myCommandText := 'SELECT * FROM kunden WHERE KDNR = '''+Edit2.Text+''';';
ADOConnection1.Connected := True; if not ADODataSet1.Active then ADODataSet1.open; with ADODataSet1 do begin DisableControls; // damit nix ruckelt (Bei mehr DS in einem Grid z.B) CommandText := mycommandtext; Requery; EnableControls; end; Gruss raeschnix P.S Wo ist die Formatierung hin in der Vorschau ??? [edit=r_kerber]Delphi-Tags gesetzt. Mfg, r_kerber[/edit] |
Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc
Hallo,
auf den Requery würde ich mich nicht verlassen |
Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc
hallo,
soweit so gut. also mein qt sieht jetzt so aus:
Delphi-Quellcode:
ich lese 14 felder aus der db aus und packe sie in dbedits. ich erhalte beim starten der prozedur allerdings immer die fehlermeldung, dass das feld, welches in dbedit14 geschrieben werden soll, nicht gefunden werden kann. wenn ich noch ein edit hinzufüge, dann wird das 15. feld nicht gefunden. also immer das letzte. woran kann das liegen.
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + strDBPath+strMandant+ '\db.mdb;Mode=Share Deny Read|Share Deny Write;Persist Security Info=False;';
ADOConnection1.Connected := True; ADODataSet1.Close; ADODataSet1.CommandText := 'SELECT Count(*) as Anzahl FROM kunden WHERE KDNR=''' +Edit2.Text+ ''';'; ADODataSet1.Open; n := ADOQuery1.FieldByName('Name1').asInteger; if n > 0 then begin Label20.Caption := 'ja'; end else begin Label20.Caption := 'nein'; end; wie muss ich eigenltich die ADOquery einbinden? habs jetzt einfach mit der connection gemacht. oder muss ich auf datasource zurückgreifen? danke nochmals. ihr habt mir schon sehr weitergeholfen. mfg tkliewe [edit=r_kerber]Delphi-Tags gesetzt. Mfg, r_kerber[/edit] |
Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc
Hallo,
Zitat:
datasource ist mit dataset dataset mit connection. Zitat:
nochmals, auf dein form ist ein DataSource (ds) und ein ADODataSet (ads) und n DBedit (dbe) ads hat connection ads.active = true ds ist mit ads verbunden dbe.datasource ist mit ds verbunden dbe.datafield ist feld1 dbe9.datasource ist mit ds verbunden dbe9.datafield ist feld9 Zitat:
aber jetzt muss ich noch etwas mehr erzählen Du brauchst ein ADOdataset für den 'SELECT' und ein anderes für den 'COUNT' ach, vielleicht hast du deswegen keine felder mehr
Code:
das ADODataSet2 ist mit deinen Datasource und den DBedit's verbunden
ADOConnection1.Connected := True;
ADODataSet1.Close; ADODataSet1.CommandText := 'SELECT Count(*) as Anzahl FROM kunden WHERE KDNR=''' +Edit2.Text+ ''';'; ADODataSet1.Open; n := ADODataSet1.FieldByName('Name1').asInteger; if n > 0 then begin ADODataSet2.Close; ADODataSet2.CommandText := 'SELECT Count(*) as Anzahl FROM kunden WHERE KDNR=''' +Edit2.Text+ ''';'; ADODataSet2.Open; end else begin Label20.Caption := 'nein'; end; |
Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc
hallo,
danke für deine ausführliche beschreibung. werde es morgen direkt ausprobieren. ggf. melde ich mich nochmal :-D mfg tkliewe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz