AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [ADO] MaxRecords bzw. CacheSize
Thema durchsuchen
Ansicht
Themen-Optionen

[ADO] MaxRecords bzw. CacheSize

Ein Thema von MrSpock · begonnen am 30. Mär 2014 · letzter Beitrag vom 4. Apr 2014
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Dejan Vu
(Gast)

n/a Beiträge
 
#31

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 16:15
Schon klar. Aber es ist ein (Konfigurations-)unterschied vorhanden. Der Treiber kann ja funktionieren, aber wenn er unter 64-bit (EXCEL) anders konfiguriert ist, als unter Sage/Delphi-Tool (32-bit), wäre das eine Möglichkeit.
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#32

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 16:31
Schon klar. Aber es ist ein (Konfigurations-)unterschied vorhanden. Der Treiber kann ja funktionieren, aber wenn er unter 64-bit (EXCEL) anders konfiguriert ist, als unter Sage/Delphi-Tool (32-bit), wäre das eine Möglichkeit.
Deshalb hatte ich ja mal nach dem Connectionstring gefragt, da kann man alle Parameter übergeben
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#33

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 16:49
Deshalb hatte ich ja mal nach dem Connectionstring gefragt, da kann man alle Parameter übergeben
Logisch. Ich war noch so auf dem blöden BDE gebürstet, hatte ich komplett vergessen.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#34

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 18:08
Nur Spekulation: Könnte das vllt. auch was 64bit vs. 32bit Problem sein? Excel ist ja vllt. 64bit der Treiber vllt. auch, dein Programm aber nicht?
Nein, man muss das ODBC32ADM.exe Programm auf 64 Bit Systemen verwenden. Das haben wir auch gemacht.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#35

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 18:12
Schau Dir mal im Taskmanager deine Exee beim Kunden an, wenn die richtig 2GB geht dann ist OutofM....

Er läd alle Datensätze, wieviele sind das denn 100.000 oder 1.000.000 (Select Count(*) from xxx)
Wie gesagt, es sind 5400 Datensätze, aber wir haben uns den Taskmanager angeschaut. Das System ADO -> ODBC -> KHK MySQL saugt sich voll. Der Speicherverbrauch geht auf 1.8 GB, dann kommt die Fehlermeldung. Selbst wenn ich nur ca. 500 Datensätze einlese (eingeschränkt über die KundenNummer) kommt der Speicherfehler!

Wieso ist das Verhalten anders als bei mir auf dem Einzelplatzrechner
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#36

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 20:06
Schau Dir mal im Taskmanager deine Exee beim Kunden an, wenn die richtig 2GB geht dann ist OutofM....

Er läd alle Datensätze, wieviele sind das denn 100.000 oder 1.000.000 (Select Count(*) from xxx)
Wie gesagt, es sind 5400 Datensätze, aber wir haben uns den Taskmanager angeschaut. Das System ADO -> ODBC -> KHK MySQL saugt sich voll. Der Speicherverbrauch geht auf 1.8 GB, dann kommt die Fehlermeldung. Selbst wenn ich nur ca. 500 Datensätze einlese (eingeschränkt über die KundenNummer) kommt der Speicherfehler!

Wieso ist das Verhalten anders als bei mir auf dem Einzelplatzrechner
Weiter oben hatte ich dir die Lösung geschrieben!
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#37

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 3. Apr 2014, 13:33
Danke nochmal für den Hinweis. Hatte deinen Beitrag tatsächlich übersehen.

Habe mein Testprogramm jetzt gemäß deiner Empfehlung angepasst und es scheint zu funktionieren! Ich habe jetzt nur die Spalten abgerufen, die ich auchtatsächlich benötige. Die letzte Bestätigung brauche ich noch von einem Mitarbeiter, aber es sieht erstmal gut aus!

Unverständlich bleibt für mich, dass der Fehler im ODBC Treiber wohl noch nicht bekannt ist und dass er nur im Kundennetz, aber nicht auf meinem Einplatzrechner auftritt.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#38

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 3. Apr 2014, 15:05
Das Problem hängt an Inhalt des Feldes und tritt nur auf, wenn eine kritische Länge überschritten wird. Wenn Du ein Backup der Datenbank holst, dann wirst Du es sehen!


Hier mal mein Beispiel wie ich das gelöst habe:


Delphi-Quellcode:

 Unit Data.WIN.ADODB

procedure TCustomADODataSet.InternalInitFieldDefs;
...

  procedure AddFieldDef(F: Field; FieldDefs: TFieldDefs);
  var
    ....
    // echte Abfrage
    FieldType := ADOTypeToFieldType(F.Type_, F.Precision, F.NumericScale, EnableBCD);
    //
    if (F.Name='Problemfeldname') then begin
     FieldType := ftMemo;
    end;
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#39

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 3. Apr 2014, 18:32
Das habe ich jetzt nicht verstanden.

Wo bzw. wie sehe ich das in einem Backup der DB?

Und die Lösung verstehe ich auch nicht. Hast du eine Neue ADO Komponente von der alten abgeleitet und dort die angegebene Methode überschrieben?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#40

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 4. Apr 2014, 00:06
Leider geht das nicht. Man soll auf die New Classic Line nur mit den mitgelieferten ODBC Treibern von extern zugreifen. Dann ist aber gewährleistet, dass die Tabellen konsistent bleiben, weil SAGE dann eben alle Einträge in den Tabellen entsprechend aktualisiert. Ein direkten Zugreifen auf die MySQL Datenbank wird nicht unterstützt.
Ah, das ist mir zwar schleierhaft, wie das mit dem Treiber zusammenhängen soll. Ist wohl ehr ein Beitrag aus der Märchenstunde. Entweder das überwacht die Datenbank (entsprechendes Design) oder die Applikation. Aber bestimmt nicht der ODBC Treiber
Nein der ODBC-Treiber überwacht das nicht, aber das womit dieser ODBC-Treiber spricht ... und ich vermute mal, der wird eben nicht direkt mit dem MySQL-Server sprechen
Code:
CL-ODBC-Treiber <-> CL-Server <-> MySQL-Server <-> CL-Datenbank
statt
Code:
MySQL-ODBC-Treiber <-> MySQL-Server <-> CL-Datenbank
Insofern wird der ConnectionString auch sehr unspannend sein, da dieser nur Einstellungen für den CL-ODBC-Treiber beinhalten kann und die haben nun mal nix mit dem MySQL-ODBC-Treiber zu schaffen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 21:33 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