AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Datenmodul-Funktionen Delphi XE vs. Delphi 10
Thema durchsuchen
Ansicht
Themen-Optionen

Datenmodul-Funktionen Delphi XE vs. Delphi 10

Ein Thema von Gerkey · begonnen am 21. Dez 2016 · letzter Beitrag vom 22. Dez 2016
Antwort Antwort
mkinzler
(Moderator)

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

AW: Datenmodul-Funktionen Delphi XE vs. Delphi 10

  Alt 21. Dez 2016, 09:19
Ohne weitere Details wird das schwierig werden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.368 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Datenmodul-Funktionen Delphi XE vs. Delphi 10

  Alt 21. Dez 2016, 09:52
Funktioniert denn die 32-Bit-Version mit Delphi 10 kompiliert noch?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Datenmodul-Funktionen Delphi XE vs. Delphi 10

  Alt 21. Dez 2016, 14:21
Das Problem dürfte weniger am Datenmodul selbst liegen, sondern eher an den genutzten Datenbankkomponenten.

Bei dem Zugriff auf Access (und auch andere Datenbanken) kommt diese Fehlermeldung eher dann, wenn die Daten eine Abfrage aktuallisiert werden sollen, die Abfrage aber nicht über einen eindeutigen Schlüssel verfügt oder Daten in mehreren Tabellen aktuallisiert werden müssten.

Prüf' bitte mal, ob die Eigenschaften der Datenzugriffskomponenten in beiden Delphiversionen inhaltlich übereinstimmen.

Beschreib' bitte mal etwas genauer, wie Du auf die Datenbank zugreifst, also welche Komponenten ... Wird für den Zugriff ein SQL-Statement genutzt? Wenn ja, stell' das bitte hier mal ein.
  Mit Zitat antworten Zitat
Gerkey

Registriert seit: 18. Okt 2016
Ort: Bad Kreuznach
52 Beiträge
 
Delphi XE Professional
 
#4

AW: Datenmodul-Funktionen Delphi XE vs. Delphi 10

  Alt 21. Dez 2016, 18:48
Erst einmal mein Dank für die mehrfachen Kommentare !
Nachstehend ein Auszug aus dem Datenmodul:

uses
SysUtils, Classes, Dialogs, Messages, DB, ADODB;

procedure Tdm.DataModuleCreate(Sender: TObject);
begin
dm.Hd.ConnectionString := Format('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Persist Security Info=False',['c:\JrBrHd.mdb']);
dm.Hd.DisableControls;

Procedure ZEITINTERVALLE_SPEICHERN;

if FINDE_HAND_MIT_HANDNR( 'G001' ) then
begin
….
dm.Hd.Edit;
dm.Hd['Info1'] := strIntv;
dm.Hd.Post;
end;

Das Datenmodul ist in beiden Fällen bis auf die Zeile mit dem ConnectionString (nur in der 64-Bit Version / Delphi 10 enthalten ) identisch.
Hilft das weiter ?

Zur Frage, ob die 32-Bit Version unter Delphi 10 läuft: ja, das tut sie, wenn ich die Zeile mit dem ConnectionString lösche !

Gerkey
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Datenmodul-Funktionen Delphi XE vs. Delphi 10

  Alt 21. Dez 2016, 19:33
Zeig' uns bitte mal von dm.Hd den Teil aus der DMF. Eventuell kann man an den dort gesetzten Attributen was erkennen oder zumindest erahnen.

Der Fehler tritt wohl hier auf: dm.Hd.Post

Wie kommt denn die Datenbankverbindung zustande, wenn Du die Zeile mit dem ConnectionString löschst?
Da muss es doch dann noch irgendwo eine Stelle geben, die die Datenbankverbindung herstellen kann.

Was genau ist HD? TADOIrgendwas?
Gibt es dort ein SQL?
Wie wird da die Verbindung zur Datenmenge hergestellt?

Was macht den FINDE_HAND_MIT_HANDNR('G001')? Dürfen wir was über das Innenleben erfahren? Da wird ja wohl die zu editierende Datenmenge ausgewählt. Und die scheint ja nicht änderbar zu sein.
  Mit Zitat antworten Zitat
Slipstream
(Gast)

n/a Beiträge
 
#6

AW: Datenmodul-Funktionen Delphi XE vs. Delphi 10

  Alt 21. Dez 2016, 20:55
Erst einmal mein Dank für die mehrfachen Kommentare !
Delphi-Quellcode:
procedure Tdm.DataModuleCreate(Sender: TObject);
begin
  dm.Hd.ConnectionString := Format('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Persist Security Info=False',['c:\JrBrHd.mdb']);
  dm.Hd.DisableControls;
Hd ist bestimmt ein Data.Win.ADODB.TADODataSet, oder? Bei TAdoconnection gibts einen ConnectionString, aber kein DisableControls.
Wenn du dem Dataset einen Connectionstring zuweist, ist das Dataset dann automatisch mit der richtigen Tabelle verbunden? Ich fürchte nein.
Wenn du sofort nach dem Zuweisen des Connectionstring DisableControls aufrufst, ist das Dataset bzw. seine Komponenten deaktiviert und die Tabelle noch immer nicht mit dem Dataset verbunden.

Hast du es schonmal mit TADODataSet.Open versucht? Das soll laut Online-Hilfe die Datenmenge aktivieren. Danach sollte man mit der Tabelle ganz normal arbeiten können. Wenn man damit fertig ist, kann man die Tabelle oder die Datenmenge mit TADODataSet.Close wieder schliessen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Datenmodul-Funktionen Delphi XE vs. Delphi 10

  Alt 21. Dez 2016, 22:55
Hd ist bestimmt ein Data.Win.ADODB.TADODataSet, oder? Bei TAdoconnection gibts einen ConnectionString, aber kein DisableControls.
Wenn du dem Dataset einen Connectionstring zuweist, ist das Dataset dann automatisch mit der richtigen Tabelle verbunden? Ich fürchte nein.
Wenn du sofort nach dem Zuweisen des Connectionstring DisableControls aufrufst, ist das Dataset bzw. seine Komponenten deaktiviert und die Tabelle noch immer nicht mit dem Dataset verbunden.

Hast du es schonmal mit TADODataSet.Open versucht? Das soll laut Online-Hilfe die Datenmenge aktivieren. Danach sollte man mit der Tabelle ganz normal arbeiten können. Wenn man damit fertig ist, kann man die Tabelle oder die Datenmenge mit TADODataSet.Close wieder schliessen.
Warum spekulieren?
Der vollständige Source-Code hilft hier weiter.

Zur Frage, ob die 32-Bit Version unter Delphi 10 läuft: ja, das tut sie, wenn ich die Zeile mit dem ConnectionString lösche !
Alleine diese Aussage zeigt, daß hier einiges im Argen liegt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Gerkey

Registriert seit: 18. Okt 2016
Ort: Bad Kreuznach
52 Beiträge
 
Delphi XE Professional
 
#8

AW: Datenmodul-Funktionen Delphi XE vs. Delphi 10

  Alt 22. Dez 2016, 09:41
Datenmodul:
uses
SysUtils, Classes, Dialogs, Messages, DB, ADODB;
type
Tdm = class(TDataModule)
ADOConnection1: TADOConnection;
Hd: TADOTable;

{ ________________________ procedure Tdm.DataModuleCreate _____________________}
procedure Tdm.DataModuleCreate(Sender: TObject);
begin
dm.Hd.ConnectionString := Format('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Persist Security Info=False',['c:\JrBrHd.mdb']);
{ dm.Hd.DisableControls; }
end;

Function FINDE_HAND_MIT_HANDNR( HdNr : String ) : boolean;
begin
if not dm.Hd.Active then dm.Hd.Open;
result := False;
if dm.Hd.Locate('HdNr',(HdNr),[loPartialKey]) then
result := True;
end;

Procedure ZEITINTERVALLE_SPEICHERN;
var sWert, strIntv : String;
begin
if FINDE_HAND_MIT_HANDNR( 'G001' ) then
begin

dm.Hd.Edit;
dm.Hd['Info1'] := strIntv;
dm.Hd.Post;
end;
end;

Die Tabelle ist also nach Ausführung von FINDE_HAND_MIT_HANDNR geöffnet. Das Problem entsteht mit der Ausführung von dm.Hd.Post !
Auch bei gelöschtem Statement dm.Hd.DisableControls kommt die Fehlermeldung.
Und in der Delphi 10 / 32-Bit Version funktioniert es (ohne ConnectionString).

Gerkey
  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:47 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