AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Feldupdate über 2 Datenbanken
Thema durchsuchen
Ansicht
Themen-Optionen

Feldupdate über 2 Datenbanken

Ein Thema von waldforest · begonnen am 4. Jun 2016 · letzter Beitrag vom 5. Jun 2016
Antwort Antwort
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

Feldupdate über 2 Datenbanken

  Alt 4. Jun 2016, 19:28
Datenbank: Firebird • Version: 2.5 • Zugriff über: Zeos
Hallo,
ich möchte mit einem SQL Update ein Feld "Preis" in meiner Artikeltabelle mit den kalkulierten Preisen aus einer Exceltabelle updaten.

Ich habe jeweils eine Connection (Firebird über fbclient und die Excel über Zeos ADO) verbunden.
In beiden Tabellen ist das Verknüpfungsfeld die ArtikelNr.

Wie muss mein SQL Updatebefehl Datenbankübergreifend aussehen um die Preise zu übernehmen ?
Geht dies überhaupt über einen direkt Updatebefehl oder muss ich mir den Preis je Datensatz aus der der Excel holen, und in der Firebirdtabelle korrigieren ?
mfg wf

Geändert von waldforest ( 4. Jun 2016 um 21:47 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Feldabdate über 2 Datenbanken

  Alt 4. Jun 2016, 19:34
Meinst Du wirklich Datenbanken oder eher Tabellen?
Markus Kinzler
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Feldupdate über 2 Datenbanken

  Alt 4. Jun 2016, 19:46
Die Inhalte stehen in den Tabellen, allerdings einmal in Firebird, und die zweite in Excel.


Aktuell sieht mein SQL wie folg aus, aber die Daten werden nicht übertargen.

Artikel ist die Tabelle in der Firebirddatenbank
Basisdaten ist die Tabelle in der Exceltabelle, con1 meine ADO Connection auf die Exceltabelle


Delphi-Quellcode:
update artikel a
set a.ARTIKEL_PREIS = (select b.NeuVK_Preis from Con1.[Basisdaten$] b where a.ARTIKELNR= b.ARTIKELNR)
mfg wf

Geändert von waldforest ( 4. Jun 2016 um 21:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#4

AW: Feldupdate über 2 Datenbanken

  Alt 5. Jun 2016, 04:11
Moin...
Zitat:
oder muss ich mir den Preis je Datensatz aus der der Excel holen, und in der Firebirdtabelle korrigieren ?
...und exakt so wird es laufen. Mit einem SQL ist es nicht möglich. Selbst mit 2 Datenbanken unter einem Datenbankserver ist es, von DBMS zu DBMS unterschiedlich, mit diversen Schwierigkeiten / Einschränkungen verbunden.
Dafür baut man sich eine Zwischenschicht die beide DB (Excel als DB zu bezeichnen ist...Jehova ) kennt und der das Programm die Befehle erteilt. (z.B. Übertrage die Daten der ID 42)

Geändert von haentschman ( 5. Jun 2016 um 04:15 Uhr)
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Feldupdate über 2 Datenbanken

  Alt 5. Jun 2016, 07:00
Hallo,
danke, ich hatte es befürchtet. Gut, dann gehe ich den Umweg über Querys und skipe die Datensätze durch.

@Gut Excel ist keine DB, wäre besser gewesen 2 unterschiedliche Datenquellen.
mfg wf
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Feldupdate über 2 Datenbanken

  Alt 5. Jun 2016, 08:28
Also mein erster Ansatz wäre in der FireBird-DB eine Tabelle anzulegen, die mit der Exceltabelle übereinstimmt.

Diese Tabelle in der FireBird-DB ist normalerweise leer.

Dann wird ein Import gestartet, mit dem diese Tabelle mit den Exceldaten befüllt wird.

Anschließend kann das Update per SQL erfolgen und zum Schluss wird die Tabelle mit den Exceldaten wieder geleert.

Für die Datenübernahme aus Excel gäbe es mehrere Möglichkeiten.

Einmal per while not eof über die Tabelle laufen und jeweils die Daten feldweise in die FireBird-Tabelle kopieren.

Alternative wäre z. B.:
Wiederum while not EoF über die Exceltabelle und pro Datenzeile ein Insertstatement erstellen und dann die Insertstatement am Ende per "Block" in die FireBird-Tabelle "jagen".
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Feldupdate über 2 Datenbanken

  Alt 5. Jun 2016, 17:21
Hat nicht irgendein MS OLEDB Treiber so eine Möglichkeit, heterogene Datenquellen einzubinden? Das geht doch sogar direkt im SQL, also die Angabe der fremden Datenquelle.
Weiß leider grad nicht, was das war und wie es mit FB zusammengeht. War es der MSSQL Treiber selbst?
Gruß, Jo
  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 12:16 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