AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit geschlossener Datenmenge!
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit geschlossener Datenmenge!

Ein Thema von daredd · begonnen am 9. Jun 2009 · letzter Beitrag vom 12. Jun 2009
Antwort Antwort
Seite 1 von 3  1 23      
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#1

Problem mit geschlossener Datenmenge!

  Alt 9. Jun 2009, 22:24
Datenbank: Firebird • Zugriff über: IBDAC
Hallo,

also nach langen hin und her probieren hab ich mich nun entschlossen IBDAC-Komponenten zu benutzen, die kosten zwar aber wenigstens funktionier schon mal die Verbindung zu den Datenbanken und das umstellen von BDE war auch recht unkompliziert dank des BDE/IBX Migration Wizard.


Nun hab ich aber ein Problem mit dem eintragen von Daten in eine Tabelle.
Wenn ich die Operation Commit aufrufe sagt mir der Compiler das die Operation bei geschlossener Datenmenge nicht möglich ist. Und dann findet er gewisse Spalten in der Tabelle nicht.

Kann mir einer sagen wonach ich da überhaupt suchen soll?

Ich meine die Connection zu den Tabellen usw. steht einwandfrei, wieso ist aber die Datenmenge geschlossen? Heißt das die Tablle ist nicht Active oder so?


Delphi-Quellcode:
procedure PostFlush(Table : TIBCTable);
begin
     with Table do begin
          if (State = dsEdit) or (State = dsInsert) then Post;
          if (Connection <> nil) then begin
           if Connection.InTransaction then Connection.Commit;
        end else begin
             Transaction.Commit;
          end;
          Refresh;
   end;
end;
Das ist noch mal der Code, bei Refresh kommt dann dei Fehlermeldung:
Erste Gelegenheit für Exception bei $778B42EB. Exception-Klasse EDatabaseError mit Meldung 'tbPacient: Operation bei geschlossener Datenmenge nicht ausführbar'. Prozess Unknown.exe (3220)

Auch und dannach kommt:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Unknown.exe ist eine Exception der Klasse EDatabaseError mit der Meldung 'tbPacient: Das Feld 'Ind' wurde nicht gefunden' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

usw.
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Problem mit geschlossener Datenmenge!

  Alt 9. Jun 2009, 22:42
Existiert den das Feld Ind?
Nimm aber besser keine Table-Komponente bei richtigen DBMS!
Markus Kinzler
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#3

Re: Problem mit geschlossener Datenmenge!

  Alt 9. Jun 2009, 22:46
Na klar exestiert IND!

Aber wie soll ich denn sonst vorgehen wenn nicht mit Table-Komponeten, ist doch einfacher so.

Ich habe jetzt noch am anfang der Procedure
Connection.Open;
Table.Open;
Table.Active := True; gesetzt, trozdem kommen die Fehler.
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Problem mit geschlossener Datenmenge!

  Alt 9. Jun 2009, 22:48
Aber heisst das Feld auch 'Ind' oder 'ind' oder 'IND'. Da ist ja ein Unterschied
Markus Kinzler
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#5

Re: Problem mit geschlossener Datenmenge!

  Alt 9. Jun 2009, 22:52
Also ich habe nun folgendes gemacht:

Delphi-Quellcode:
procedure PostFlush(Table : TIBCTable);
begin
     with Table do begin
          if (State = dsEdit) or (State = dsInsert) then Post;
          if (Connection <> nil) then begin
           if Connection.InTransaction then Connection.Commit;
        end else begin
             Transaction.Commit;
          end;
          Connection.Open;
          Table.Open;
          Table.Active := true;
          Refresh;
   end;
end;
Das funktioniert, aus irgendeinem Grund ist die Datenmenge geschlossen.

Wenn ich nun das Programm laufen lasse, kommt die Fehlermeldung bei der Tabelle tbPacient nicht mehr er geht weiter und bleib dann wieder mit einem 'Ind' nicht gefunden Fehler hängen, diesmal aber an einer anderen Tabelle.


Kann es sein das generell alle Tabellen geschlossen sind oder so?
Schließt das Commit die Datenmenge wieder?

@mkinzler:

Das heist 'Ind'
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Problem mit geschlossener Datenmenge!

  Alt 9. Jun 2009, 22:57
Versuch es mal Testweise mit eine TIBCQuery. Ist wie gesagt sowieso besser
Markus Kinzler
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#7

Re: Problem mit geschlossener Datenmenge!

  Alt 9. Jun 2009, 23:01
Oh ne, weisst du wieviel arbeit das wieder ist alle Tablle (ca. 28) in Queries umzuwandeln. Und dann ständig mit SQL (was ich nicht kann) Tabellen zu bearbeiten.

Gibts da keine bessere Lösung?
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Problem mit geschlossener Datenmenge!

  Alt 9. Jun 2009, 23:09
TIBCQuery ist nur wegen der Abwärtskompatibilität zur BDE vorhanden aber anders wie dort, basieren die Tables auch auf SQL. D.H. im Hintergrund werden entsprechende Abfragen generiert, diese sind nicht optimal und auch nicht beeinflussbar.
die Anzeige basiert z.B. auf der Abfrage
select * from <Tabelle>; Dies hat mehrere Nachteile:
-es werden alle Felder abgefragt ( das kleiner Problem)
-es werden alle Datensätze angefordert ( ohne Limitierung; kann bei großen Tabellen zum Problem werden)
-es können Probleme bei den Feldnamen auftreten ( bei case-sensitiven Feldern, wie in deinem Fall)

Deshalb keine Tables verwenden und entsprechende Abfragen selber festlegen ( kann durch IDE assistiert angelegt werden)
Markus Kinzler
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#9

Re: Problem mit geschlossener Datenmenge!

  Alt 9. Jun 2009, 23:25
Ja aber das ist mir echt alle ein wenig kompliziert, null bock mich da reinzufinden.

Aber das Commit schließt nicht die Tabelle oder?
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Problem mit geschlossener Datenmenge!

  Alt 9. Jun 2009, 23:31
Zitat:
Aber das Commit schließt nicht die Tabelle oder?
Eigentlich nicht.
Zitat:
Ja aber das ist mir echt alle ein wenig kompliziert, null bock mich da reinzufinden.
Würde ich aber machen. SQL ist nicht schwer und der Vorteil von relationalen Datenbanken erschliessen sich dann erst richtig
Aber für den Anfang sollte der Abfragegenerator der Komponente helfen (Einfach Doppelklick darauf)
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 07:27 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