AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO-Tabelle löschen und neu füllen
Thema durchsuchen
Ansicht
Themen-Optionen

ADO-Tabelle löschen und neu füllen

Ein Thema von Frederika · begonnen am 24. Jun 2009 · letzter Beitrag vom 30. Jun 2009
Antwort Antwort
Frederika

Registriert seit: 28. Jan 2009
81 Beiträge
 
#1

ADO-Tabelle löschen und neu füllen

  Alt 24. Jun 2009, 16:44
Datenbank: Access / Excel • Zugriff über: ADO
Hallo! Ich bin Datenbank-unerfahren und möchte folgendes machen:

>>> Mittels ADO auf eine Tabelle zugreifen, alle Datensätze löschen und x neue Datensätze einfügen.

Bisher mache ich das mit TADOCommand mit DELETE und x-mal INSERT Commands. Gibt es einen einfacheren Weg?
Wie kann man vermeiden, dass andere auf die Tabelle zugreifen, während ich noch am aufbauen der neuen Tabelle bin?
Mir wäre am liebsten, ich könnte die Tabelle irgendwie "blockieren", leeren und neu schreiben in einem Rutsch.

Vielen Dank im voraus!
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: ADO-Tabelle löschen und neu füllen

  Alt 24. Jun 2009, 16:56
Hallo,
im Prinzip nicht. Denn dafür sind ja die commands da.
Oder was meinst du damit? Für jedes einfügen muss nunmal
ein entsprechendes Commando (SQL) Richtung DB abgesetzt werden.
Für Löschen gibt es ja Bedingunen um eine,mehrere oder alle zu löschen.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Frederika

Registriert seit: 28. Jan 2009
81 Beiträge
 
#3

Re: ADO-Tabelle löschen und neu füllen

  Alt 24. Jun 2009, 17:34
Na ja, ich meine das so: Ich lösche einfach alle Datensätze einer Tabelle und schreibe danach z.B. 1000 neue hinein. Ich möchte nun verhindern, dass eine andere Anwendung währenddessen lesend zugreift und z.B. nur 700 Datensätze sieht, weil die restlichen 300 noch nicht geschrieben sind. Ich suche also eigentlich nach einer Methode, in einem Rutsch alle 1000 Datensätze neu zu schreiben und die Tabelle währenddessen zu blockieren, bis ich fertig bin.
  Mit Zitat antworten Zitat
Starstruck

Registriert seit: 6. Apr 2009
Ort: Hessen
21 Beiträge
 
#4

Re: ADO-Tabelle löschen und neu füllen

  Alt 24. Jun 2009, 18:25
Und warum fügst Du nicht alle Inserts auf einmal in die Tabelle?

etwa so:
INSERT INTO Tabelle (Nummer,Status) VALUES (1,'neu'),(2,'neu'),(3,'neu') Könnt bei 1000 Einträgen ein etwas langer String werden!
Alternativ müsstest Du die DB exklusiv öffnen.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: ADO-Tabelle löschen und neu füllen

  Alt 24. Jun 2009, 19:26
Hallo,

das muss einfach im Rahmen einer einzelnen Transaktion erfolgen

Connection.StartTransaction / BeginTransaction
Delete
Inserts
Connection.Commit


Inwiefern Access in der Realität damit klarkommt, musst du ausprobieren.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: ADO-Tabelle löschen und neu füllen

  Alt 25. Jun 2009, 07:03
Leider unterstützt Access/Jet keine Rechtevergabe per SQL.
Wen du nur Inserts machen willst und keine Updates
ist es doch,bis auf Ausnahmefälle, völlig Rille.
Anders wäe es bei Updates.
Für solche Fälle sieht die Standardkomponente "ADOConnection"
lediglich die Attribute: CommitRetaining und AbortRetaining vor,
sowie den Isolationlevel. Beide bestimmen das Verhalten während
laufender Transaktionen.

Grüße
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#7

Re: ADO-Tabelle löschen und neu füllen

  Alt 25. Jun 2009, 09:56
Moin, moin,

also mit Ado und Access würde ich das mit Folgendem angehen...

Delphi-Quellcode:

var Level: integer;
begin
  // Query bereit machen
  if ADOQuery.Active then ADOQuery.Active := false
  ADOQuery. Clear;
  Level:=ADOConnection1.BeginTrans;
  try
    //-------------------------
    // Datenbankoperationen
    //-------------------------

    . . .
    ADOQuery.Add('Update ....
ADOQuery.Exceute
. . .

//-------------------------
//-------------------------
ADOConnection1.CommitTrans;
except
on E:Exception do
begin
ADOConnection1.RollbackTrans;
end;
end;//try
ADOQuery.Active := false;
ADOQuery. Clear;
end;
Grüße in die Runde // Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Frederika

Registriert seit: 28. Jan 2009
81 Beiträge
 
#8

Re: ADO-Tabelle löschen und neu füllen

  Alt 30. Jun 2009, 10:12
Danke für Eure Antworten! Die Lösung mit BeginTrans und CommitTrans werde ich jetzt mal erproben!
  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 16:45 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