AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Kein Datensatz->Fehler abfangen & DBEdit zurückschreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Kein Datensatz->Fehler abfangen & DBEdit zurückschreiben

Ein Thema von daywalker-dj-k · begonnen am 14. Jan 2004 · letzter Beitrag vom 14. Jan 2004
Antwort Antwort
daywalker-dj-k

Registriert seit: 27. Nov 2003
85 Beiträge
 
#1

Kein Datensatz->Fehler abfangen & DBEdit zurückschrei

  Alt 14. Jan 2004, 20:51
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:
      try
        ADODataSet1.CommandText := 'SELECT * FROM kunden WHERE KDNR='''+Edit2.Text+''';';
        ADOConnection1.Connected := True;
        ADODataSet1.Active := True;
      except
        Label20.Caption := 'Fehler';
      end;
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?

danke
mfg
tkliewe

[edit=r_kerber]Delphi-Tags gesetzt. Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von trifid
trifid

Registriert seit: 12. Sep 2003
297 Beiträge
 
#2

Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc

  Alt 14. Jan 2004, 21:49
Hallo,

mehrere Punkte ... (nein nicht diese)

Zitat:
try
ADODataSet1.CommandText := 'SELECT * FROM kunden WHERE KDNR='''+Edit2.Text+''';';
ADOConnection1.Connected := True;
ADODataSet1.Active := True;
except
Label20.Caption := 'Fehler';
end;
die Connection ADOConnection1.Connected := True; würde ich von Anfang an auf TRUE haben
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
   SELECT Count(*) FROM kunden WHERE KDNR='123' ob überhaupt ein Kunde in der DB vorhanden ist, erst dann würde ich mit anderen Zuweisungen fortfahren .

drittens dbedit
Zitat:
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?
in welchen Bezug steht das zum oberen Verhalten ?
wurde ein .Post durchgeführt, nachdem die Daten in dbedit geändert wurden ?
  Mit Zitat antworten Zitat
daywalker-dj-k

Registriert seit: 27. Nov 2003
85 Beiträge
 
#3

Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc

  Alt 14. Jan 2004, 22:00
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:
   SELECT Count(*) FROM kunden WHERE KDNR='123' also soll ich diesen sql-string als command-text einsetzen und nachher abfragen ob das ungleich 0 ist, oder wie ist das gemeint?


.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]
  Mit Zitat antworten Zitat
Benutzerbild von trifid
trifid

Registriert seit: 12. Sep 2003
297 Beiträge
 
#4

Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc

  Alt 14. Jan 2004, 22:15
Hallo,

mitlerweile poste ich deine anliegen quer ... kann anstrengend werden (nicht für mich, für dich)

Zitat:
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
wenn du ständig die Verbindung aufbaust und trennst bei deiner access-datenbank, dann
warten irgendwann die anderen
bei access ist es nicht so kritisch wie bei einen SQL-Server



Zitat:
also soll ich diesen sql-string als command-text einsetzen und nachher abfragen ob das ungleich 0 ist, oder wie ist das gemeint?
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:
.post wurde nicht ausgeführt. hab noch nie vorher auf ne access-db zugegriffen. wie bzw. an welchem objekt muss ich das ausführen.
Es gibt von Borland eine wunderschöne Einführungs-Broschüre die liegt bei jeden Delphi dabei
Hier ist ein Beispiel beschrieben wie man sich in die Datenbank-Komponenten einarbeitet kann.

Delphi-Quellcode:
ADODataSet.Edit;
ADODataSet.FieldByName('KundenName').asString := 'daywalker-dj-k';
ADODataSet.Post;
wenn Du den DBnavigator verwendest, dann wird das "häckchen" aktiv - dahinter verbirgt sich ein post

[edit=r_kerber]Code ind Delphi-Tags geändert. Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat
raeschnix

Registriert seit: 10. Jan 2004
Ort: Momentan in Umschulung
13 Beiträge
 
#5

Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc

  Alt 14. Jan 2004, 22:35
Hi!

Also ich würds in etwa so lösen:

Delphi-Quellcode:
  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;
Dazu bauste noch ne RecordCount Variable ein und prüfst vorher ab ob > = 0 und gibst ne entsprechende Meldung aus.

Gruss
raeschnix

P.S Wo ist die Formatierung hin in der Vorschau ???

[edit=r_kerber]Delphi-Tags gesetzt. Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von trifid
trifid

Registriert seit: 12. Sep 2003
297 Beiträge
 
#6

Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc

  Alt 14. Jan 2004, 22:39
Hallo,

auf den Requery würde ich mich nicht verlassen
  Mit Zitat antworten Zitat
daywalker-dj-k

Registriert seit: 27. Nov 2003
85 Beiträge
 
#7

Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc

  Alt 14. Jan 2004, 22:58
hallo,
soweit so gut. also mein qt sieht jetzt so aus:

Delphi-Quellcode:
      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;
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.

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]
  Mit Zitat antworten Zitat
Benutzerbild von trifid
trifid

Registriert seit: 12. Sep 2003
297 Beiträge
 
#8

Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc

  Alt 14. Jan 2004, 23:09
Hallo,


Zitat:
ich lese 14 felder aus der db aus und packe sie in dbedits.
machst Du das manuell ? normalerweise funktioniert das über die dbedit.datasource-verbindung
datasource ist mit dataset dataset mit connection.

Zitat:
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.
source, würde hier weiterhelfen
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:
wie muss ich eigenltich die ADOquery einbinden? habs jetzt einfach mit der connection gemacht. oder muss ich auf datasource zurückgreifen?
sorry ich habe mich mit den ADOquery verschrieben und meinte ADOdataset
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:
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;
das ADODataSet2 ist mit deinen Datasource und den DBedit's verbunden
  Mit Zitat antworten Zitat
daywalker-dj-k

Registriert seit: 27. Nov 2003
85 Beiträge
 
#9

Re: Kein Datensatz->Fehler abfangen & DBEdit zurücksc

  Alt 14. Jan 2004, 23:41
hallo,
danke für deine ausführliche beschreibung. werde es morgen direkt ausprobieren.
ggf. melde ich mich nochmal
mfg
tkliewe
  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 08:15 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