Anzeige
Archiv - Navigation
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

SQL Tabellendaten via VBA kopieren

SQL Tabellendaten via VBA kopieren
04.10.2007 18:15:00
maik
Hallo allerseits,
eine Frage an die SQL - Experten unter Euch:
Ich möchte aus Excel via VBA Daten die ein bestimmtes Kriterium erfüllen (z.b. Spalte "name" = "Müller") von einer Tabelle auf einem SQL Server auf eine andere Tabelle auf einem SQL-Server kopieren.
Bei folgendem Quellcode bekomme ich eine Fehlermeldung:
StrSQL4 = "INSERT INTO TABELLE2 (name, datum, anzahl) "
strSQL5 = "Select (name, datum, anzahl) "
strSQL6 = "FROM TABELLE1 "
StrSQL7 = "WHERE name='" + username + "'" 'username wird vorher im Makro korrekt ausgelesen
StrSQL8 = StrSQL4 + strSQL5 + strSQL6 + StrSQL7
conntemp.Execute (StrSQL8)

Verbindung zum Server vorher etc. funktioniert, wenn ich nur den "name" kopieren lasse (ohne "datum" und "anzahl") funktioniert es ebenfalls. Ich bin etwas ratlos...
Hat jemand eine Idee?
DANKE + Grüße
maik

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SQL Tabellendaten via VBA kopieren
05.10.2007 03:34:00
ChrisL
Hallo Maik
Bin auch kein SQL Profi, aber ich denke du bekommst als Resultat von Select ein Array zurück, aber für Insert brauchst du die Daten als String, Komma getrennt.
Kürzlich habe ich für PHP folgende Funktion geschrieben...
function returnstring($ar) {
for($i=0; $i<=(count($ar)/2)-1; $i = $i+1)
if ($i == 0)
$str = "'$ar[$i]'";
else
$str .= ",'$ar[$i]'";
return $str;
}
Musst halt noch nach VBA übersetzen, aber macht aus...
Resultat = Array("Daten1","Daten2","Daten3")
Resultat = "Daten1,Daten2,Daten3"
Hoffe du kommst so weiter
cu
Chris

Anzeige
AW: SQL Tabellendaten via VBA kopieren
08.10.2007 06:29:00
Rene
Hallo Maik,
das kann gar nicht gehen!
Du schreibst:
StrSQL4 = "INSERT INTO TABELLE2 (name, datum, anzahl) "
strSQL5 = "Select (name, datum, anzahl) "
strSQL6 = "FROM TABELLE1 "
StrSQL7 = "WHERE name='" + username + "'" 'username wird vorher im Makro korrekt ausgelesen
... und willst dann alles auf einmal gegen die DB schicken.
Du kannst aber nicht in einem Statement Daten schreiben und gleich wieder abfragen.
Du musst erst die Daten schreiben (StrSQL4) und dann kannst du sie wieder lesen (5 bis 7).
Das könnte also so aussehen:
StrSQL8 = strSQL5 + strSQL6 + StrSQL7
conntemp.Execute(StrSQL4)
conntemp.Execute (StrSQL8)
Gruß
René
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige