AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensätze verschieben bzw synchronisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datensätze verschieben bzw synchronisieren

Ein Thema von bandlow · begonnen am 31. Dez 2006 · letzter Beitrag vom 1. Jan 2007
Antwort Antwort
bandlow

Registriert seit: 16. Jul 2004
9 Beiträge
 
#1

Datensätze verschieben bzw synchronisieren

  Alt 31. Dez 2006, 14:58
Datenbank: ACCESS • Version: 2000 • Zugriff über: ADO
Hallo,
ich lese aus einer Datenbank einträge in eine Listview ein. In der Listview können die Einträge beliebig verschoben, hinzugefügt oder gelöscht werden. Die Reihenfolge muss dann wieder zurück in die Datenbank.
Im Augenblick benute ich bookmarks, das scheint mir jedoch ziemlich langsam zu sein. Immerhin ändern sich ja alle Positionen in der Datenbank wenn man nur einen Datensatz verschiebt. Kennt jemand eine schnelle Lösung, evtl im Hintergrund mit Threads speichern, oder eine Datenbankkompo die das kann?

Guten Rutsch

Karsten
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Datensätze verschieben bzw synchronisieren

  Alt 31. Dez 2006, 15:42
Du könntest dir eine intelligente SQL-Anweisung überlegen:

SQL-Code:
UPDATE Tabelle1 SET Position = Position + 1 where Position > 123 and Position < 1000

UPDATE Tabelle1 SET Position = 124 where Position = 1000
Sollte genügen wenn ein Datensatz von Position 1000 auf Position 124 verschoben wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Datensätze verschieben bzw synchronisieren

  Alt 31. Dez 2006, 15:45
Zitat von bandlow:
.... Die Reihenfolge muss dann wieder zurück in die Datenbank. ...
Hai Karsten,

in einer Datenbank speichert man die Datensätze nicht in einer Reihenfolge. In welcher Reihenfolge sie "kommen" sollte über einen passenden Index festgelegt werden. Du könntest also jedem Datensatz in der Tabelle noch eine Nummer vergeben (bei einem neuen bekommt dieser einfach die nächsthöchste Nummer. Wenn Du nun einen Datensatz verschiebst brauchst Du ja nur die Nummern ändern.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
bandlow

Registriert seit: 16. Jul 2004
9 Beiträge
 
#4

Re: Datensätze verschieben bzw synchronisieren

  Alt 1. Jan 2007, 11:57
Hallo Sharky,
genauso mache ich das auch. Ich versuche mein Problem etwas genauer zu umschreiben.
Es handelt sich um so eine Art Playliste. Die Datenbank hält ca 5000 Einträge davon werden 30 - 50 über eine Abfrage selektiert.

Tabellenstruktur etwa so

ID Integer Prim Index
Pos Integer Position
Titel Txt Titelanzeige

Das ganze lese ich mit einer Query aus und schreibe das Ergebnis in eine Objektliste, die ich dann wiederum in einer Listview anzeigen lasse.

In der Listview kann man dann die Einträge verschieben, löschen oder halt neue eintragen.

z.B. Pos Titel
1 Vodafone
2 Marlboro
3 Opel
wenn ich z.B. Opel jetzt veschiebe ändert sich die Position der anderen Spots. Das ganze wird dann beim Programmende bzw wenn man auf eine andere Liste wechselt zurückgeschrieben. Im Augenblick setze ich beim einlesen ein Bookmark und springe dann auf den Datensatz, ist kein Bookmark da, dann neuen Datensatz anlegen.
Das ganze dauert jedoch recht lange (ca. 500 ms), obwohl es nur 50 Datensätze sind. Gerade im Netzwerk macht es sich Bemerkbar, weil die Anwendung dann kurz blockiert ist. Es wird zwar eine Progressbar angezeit, aber es sollte schneller gehen.
Ich habe die Vermutung, das die Datenbank einfach zu viel Verkehr erzeugt.

Hat den jemand Erfahrungen mit den Bookmarks, liegt es daran?
Datenbankschnittstelle muss ADO bzw DAO sein, da die Datenbank einmal als Access und einmal als MS SQL Datenbank laufen soll.

Also wer bis jetzt noch keinen Kater hat muss wohl nochmal ein Jahr warten.

Frohes Neues Jahr

Karsten
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Datensätze verschieben bzw synchronisieren

  Alt 1. Jan 2007, 14:03
Zitat von bandlow:
Das ganze dauert jedoch recht lange (ca. 500 ms), obwohl es nur 50 Datensätze sind. Gerade im Netzwerk macht es sich Bemerkbar, weil die Anwendung dann kurz blockiert ist. Es wird zwar eine Progressbar angezeit, aber es sollte schneller gehen.
Ich habe die Vermutung, das die Datenbank einfach zu viel Verkehr erzeugt.
Ist doch kein schlechter Wert. Im Netzwerk ist vor allem der Round-Trip-Delay ein bremsendes Element.
Du hat folgende Möglichkeiten:

- Verwendung von Threads zum "gleichzeitigen" Schreiben der Datensätze
- Verwendung von Prepared Statements oder Stored Procedures

Zitat von bandlow:
Datenbankschnittstelle muss ADO bzw DAO sein, da die Datenbank einmal als Access und einmal als MS SQL Datenbank laufen soll.
Vergiss DAO! Bei Access nimmt man auch ADO und den JET-Provider. AFAIK darfst Du eh den entsprechende DAO-Treiber nur verteilen wenn du mit einer MS-IDE darauf zugreifst (FAKE-Anwendung sollte reichen).
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 07:17 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