AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MyDac Erfahrung

Ein Thema von Edelfix · begonnen am 31. Mär 2025 · letzter Beitrag vom 4. Apr 2025
Antwort Antwort
Seite 2 von 3     12 3      
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: MyDac Erfahrung

  Alt 31. Mär 2025, 20:28
habe mydac mit Lazarus am Laufen unter Linux. Keine Problem, auch beim Verarbeiten großer (also wirklich großer) Datenmengen.

Jetzt habe ich aber festgestellt das der Befehl "Locate" nur in der im Client befindlichen Menge sucht.
Wenn ich "LIMIT 100" einstelle dann findet "Locate" nur etwas in den 100. Wenn der Datensatz gerade nicht dabei ist dann wird auch nichts gefunden.
scnr: Wer mit locate und DBMS arbeitet, hat eh jegliche Kontrolle verloren

Vergiss es einfach. vergiss irgendwelche Tablekomponenten.

nimm Querykomponenten, nimm spezialisierte SQL, die genau das tun, was du willst, und nur das.

Bitte verzeih, wenn ich das nicht explizit raus suche:
Ich habe mal eine BDE Anwendung auf Postgresql umgebaut und dabei pgDac verwendet. Und natürlich für die Umbauzeit TTable mit TpgTable ersetzt. Aber selbst für die Übergangszeit war das ne "sch****" selbst der Support hat mir damals geschrieben: TxTable Komponenten sind eigentlich nicht für einen wirklichen Einsatz gedacht.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#12

AW: MyDac Erfahrung

  Alt 31. Mär 2025, 22:08
Ich kann ähnliche Erfahrungen bei der Nutzung von *Table Komponenten berichten. Wir haben ein Produkt von Uralt (Paradox + BDE, ganz früher lief das sogar noch unter DOS (ja, TurboPascal) mit dBASE) auf MySQL umgestellt. Erst mit den Zeos-Komponenten. Als dann das Lizenzgeraffel mit MySQL anfing kamen wir zu MyDAC, und haben seit ein paar Jahren auch das DBMS auf MariaDB umgestellt.

Während all dieser Zeit haben wir immer noch hier und da *Table Komponenten mitgeschleppt, die immer wieder zu Problemen diversester Art geführt haben. Der gedankliche Schritt von der alten BDE-like Arbeitsweise hin zu vernünftigen SQL-Queries ist am Anfang ungewohnt, aber es lohnt sich!!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
622 Beiträge
 
Delphi XE6 Enterprise
 
#13

AW: MyDac Erfahrung

  Alt 1. Apr 2025, 08:40
scnr: Wer mit locate und DBMS arbeitet, hat eh jegliche Kontrolle verloren

Vergiss es einfach. vergiss irgendwelche Tablekomponenten.
Und dann ersetzt man
Delphi-Quellcode:
tbl.Tablename := 'Blubb';
tbl.Filter := 'artikelnr = 4711';
tbl.Filtered := true;
tbl.Open;
if tbl.FindFirst then begin
  repeat
    tbl.Edit;
    tbl.FieldByName('bla').AsBoolean := false;
    tbl.Post;
  until not tbl.FindNext;
end;
tbl.Close;
durch
Delphi-Quellcode:
qry.SQL.Text := 'SELECT * FROM Blubb WHERE artikelnr = 4711';
qry.Open;
while not qry.Eof do begin
  qry.Edit;
  qry.FieldByName('bla').AsBoolean := false;
  qry.Post;
  qry.Next;
end;
qry.Close;
...und hat "von Table auf Query umgestellt"

Wer Verschlüsselung nutzen will mit den DevArt-Komponenten, ist sogar gezwungen, das so zu machen...

Geändert von Frickler ( 1. Apr 2025 um 08:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: MyDac Erfahrung

  Alt 1. Apr 2025, 11:00
qry.SQL.Text := 'SELECT * FROM Blubb WHERE artikelnr = 4711';
Und jetzt auch noch parametrisierte perpared Abfragen und man wird schneller und sichererer ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
333 Beiträge
 
Delphi 12 Athens
 
#15

AW: MyDac Erfahrung

  Alt 1. Apr 2025, 11:23
qry.SQL.Text := 'SELECT * FROM Blubb WHERE artikelnr = 4711';
Und jetzt auch noch parametrisierte perpared Abfragen und man wird schneller und sichererer ...
Das ist richtig und wichtig!
Also wenns wirklich nur so eine "Billo" Aufgabe ist würde ich das sogar komplett in einen Einzeiler Paken
Sparst dir dadurch das ganze Cursor-Geschubse in gänze.

Delphi-Quellcode:
qry.Execute('UPDATE Blubb SET bla=:bla WHERE artikelnr = :artikelnr',[false,4711]);
...
Solange die SQL Query eine Connection hat, brauchst du dich um nichts mehr kümmern. Außer du brauchst natürlich die SQL danach wieder um die Daten darzustellen, dann würde ich es wahrscheinlich so lösen.

Delphi-Quellcode:
qry.connection.Execute('UPDATE Blubb SET bla=:bla WHERE artikelnr = :artikelnr',[false,4711]);
qry.open('SELECT * FROM Blubb WHERE artikelnr = :artikelnr ',[4711]);
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: MyDac Erfahrung

  Alt 1. Apr 2025, 11:43
...und hat "von Table auf Query umgestellt"
boah ernsthaft? Den Satz habe ich geschrieben, dass man das halt auch nicht mahcen soll, ihn dann aber wieder gelöscht vor dem Post


Wer Verschlüsselung nutzen will mit den DevArt-Komponenten, ist sogar gezwungen, das so zu machen...

wie meinen?
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
230 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: MyDac Erfahrung

  Alt 1. Apr 2025, 15:11
Unsere Tabellen Komponenten sind immer mit einem DBGrid verbunden. Das DBGrid liegt auf einer Form aber die Table Komponente auf einem DataModul. Auch wenn die Maske grad nichts anzeigt so ist die Table von überall erreichbar. Es wird von unterschiedlichen Stellen aus ein Locate gemacht dann der Datnsatz (fals gefunden) in ein Record geladen und dann verarbeitet oder im DBGrid angezeigt.
Bis jetzt war das eine Zeile mit Locate. Wir mussten uns nicht darum kümmern ob das Locate dafür da ist ein Datensatz zu holen oder im Grid zu positionieren. Und davon etwas 2.000 mal im Projekt.
Jetzt muss ich mit „LIMIT 100“ für das DBGrid arbeiten und dafür sorgen das der gesucht Datensatz bei den 100 dabei ist um dann im DBGrid darauf zu positionieren oder nur ein Datensatz um dann mit einem Record zu arbeiten.
Der SQL Befehl währe dann:
1. Ich brauche eine separate SQL Komponente um den Datensatz zu suchen.
2. Jetzt der SQL Aufruf mit LIMI 100 und OFFSET (gesuchter Datensatz).
3. Und noch mit Locate im DBGrid auf den Datensatz positionieren.
Das ist mehr als nur eine Zeile.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
778 Beiträge
 
#18

AW: MyDac Erfahrung

  Alt 1. Apr 2025, 17:52
Anstatt alle Stellen im Code anzupassen, erstellst du dir eine eigene Komponente TMyTable, abgeleitet von TfdQuery, die du dann überall verwendest. Die erweiterst / überschreibst du dann so, dass du von außen damit arbeitest wie mit einer F(fd)Table Komponente, aber intern eine Query für die benötigten Datensätze verwendet wird. Z.B. überschreibst du das Locate mit der Vorgehensweise wie du sie im letzten Beitrag beschrieben hast.

Oder, wenn möglich, steigst du auf Firebird um (siehe mein vorheriger Beitrag).
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
689 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: MyDac Erfahrung

  Alt 2. Apr 2025, 07:05
Falls Du DevExpress noch zusätzlich im Einsatz hast, dann gibt es dort den Servermode. Der sucht auf dem Server und holt sich immer nur durch clevere Queries was er im Grid gerade anzeigt, auch beim Scrollen
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
230 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: MyDac Erfahrung

  Alt 2. Apr 2025, 11:59
Die Idee von Olli73 klingt vielversprechend.

Danke.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 18:18 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