![]() |
Datenbank: SQL SERVER 2008 • Version: 2008 • Zugriff über: ADO
SQL Datensätze von einer Tabelle in eine andere Tabelle kopieren
Hallo Delphi-Spezialisten,
ich habe eine Datenbank in der sich 4 Tabellen befinden: PRODUKTE ist gefüllt ca. 15.000 Datensätze PRODUKTE_01 identisch wie Produkte aber leer PRODUKTE_02 identisch wie Produkte aber leer PRODUKTE_03 identisch wie PRODUKTE aber leer Mit INSERT into ...SELECT from WHERE... möchte ich nun alle Datensätze der Tabelle PRODUKTE in die TABELLE Produkte_01 kopieren. Bei der Ausführung des Select-Statements wird aber nur der erste Datensatz kopiert !! Hier mal der Quell-CODE :
Code:
Hat jemand eine IDEE ??
//==============================================================================
// DATENBANK sichern //============================================================================== Procedure Tform1.DB_SICH; begin Showmessage(IntToStr(BACKZAHL)); if BACKZAHL = 1 then begin // leere die BACKUP-DB Nr. 1 ADOQueryMetro.SQL.Clear; ADOQueryMetro.SQL.Text := 'TRUNCATE table dbo.PRODUKTE_01'; ADOQueryMETRO.ExecSQL; SHowmessage('DB leer'); // Füge Datensätze an ADOQueryMETRO.SQL.Clear; ADOQueryMETRO.SQL.Text := 'INSERT INTO PRODUKTE_01 '+ '(EAN_NR, ART_NR, ART_BEZ_ALTERN, PWHG, PWG, PWUG, KZ_WERB) '+ ' SELECT EAN_NR, ART_NR, ART_BEZ_ALTERN, PWHG, PWG, PWUG, KZ_WERB'+ ' FROM PRODUKTE Where EAN_NR <> '+ QuotedStr(''); ADOQueryMETRO.ExecSQL; Showmessage('tabelle kopiert'); end; end; Vielen dank schonmal im voraus |
AW: SQL Datensätze von einer Tabelle in eine andere Tabelle kopieren
Was passiert denn wenn Du:
Delphi-Quellcode:
machst?
'SELECT * FROM PRODUKTE Where EAN_NR <> '+ QuotedStr('')';
Oder besser
Delphi-Quellcode:
Wobei ist denn EAN_NR überhaupt ein VARCHAR?
SELECT * FROM PRODUKTE Where EAN_NR <> :EAN_NR;
Qry.ParamByName('EAN_NR')AsString := ''; Und ist das leere Feld nicht zufälligerweise NULL? Und dann noch: Wenn Du alle Datensätze mit allen Werten kopieren musst: Weshalb nicht:
Delphi-Quellcode:
'INSERT INTO PRODUKTE_01 SELECT * FROM PRODUKTE Where EAN_NR <> :EAN_NR';
|
AW: SQL Datensätze von einer Tabelle in eine andere Tabelle kopieren
Hallo taveuni,
vielen Dank für Deine Ausführungen. Das Feld ist VarChar(13). Die Abfrage mit Parameter ergibt dasselbe Ergebnis ! Hier der geänderte Code:
Code:
Das einfache Select-Statement (SELECT * from PRODUKTE where EAN_NR <> '') ergibt :
//==============================================================================
// DATENBANK sichern //============================================================================== Procedure Tform1.DB_SICH; begin Showmessage(IntToStr(BACKZAHL)); if BACKZAHL = 1 then begin // leere die BACKUP-DB Nr. 1 ADOQueryMetro.SQL.Clear; ADOQueryMetro.SQL.Text := 'TRUNCATE table dbo.PRODUKTE_01'; ADOQueryMETRO.ExecSQL; SHowmessage('DB leer'); // Füge Datensätze an ADOQueryMETRO.SQL.Clear; ADOQueryMETRO.SQL.Text := 'INSERT INTO PRODUKTE_01 '+ ' SELECT * FROM PRODUKTE Where EAN_NR <> :sEAN_NR'; ADOQueryMETRO.Parameters.ParamByName('sEAN_NR').Value := ''; ADOQueryMETRO.ExecSQL; Showmessage('tabelle kopiert'); end; end; 15580 Reihen abgerufen (577 ms) Gruss nachtstreuner60 |
AW: SQL Datensätze von einer Tabelle in eine andere Tabelle kopieren
Hallo,
setz den select-Befehl doch mal separat ab und lass dir anzeigen, wieviele Datensätze gefunden wurden. Ich denke, der Hinweis von taveuni bzgl. NULL ist wichtig. |
AW: SQL Datensätze von einer Tabelle in eine andere Tabelle kopieren
Hallo GHorn,
das habe ich bereits gemacht, siehe vorhergehenden Beitrag. Da dieses Feld der PK ist und not NULL muss es angezeigt werden. Die Abfrage hat über 15.500 DS ergeben !!:| |
AW: SQL Datensätze von einer Tabelle in eine andere Tabelle kopieren
:duck: wer lesen kann ist klar im Vorteil ...
Hatte ich glatt übersehen.:oops::oops: |
AW: SQL Datensätze von einer Tabelle in eine andere Tabelle kopieren
Zitat:
|
AW: SQL Datensätze von einer Tabelle in eine andere Tabelle kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo tavuni,
jetzt hast mich aber auf was gebracht !!!!! :oops: Vergessen in der QueryKomponente den ConnectionString zu übergeben !! Nachgeholt !!! ... und siehe da... Wenn ich das Proggie durchlaufen lasse wird die Zieltabelle mit allen Daten gefüllt Vielen Dank an all ! Bestes Forum :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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 by Thomas Breitkreuz