Microsoft Excel

Herbers Excel/VBA-Archiv

SQL-Abfrage in Excel mit Replace

Betrifft: SQL-Abfrage in Excel mit Replace von: Martin
Geschrieben am: 17.09.2014 12:28:38

Hallo,

ich scheitere in Excel-VBA jetzt schon eine ganze Weile mit dem Versuch beim Auslesen einer Access-Datenbank die Leerzeichen einer Spalte zu ersetzen.

Folgender Ausdruck mit Trim klappt einwandfrei:

sSql = "SELECT Trim(EMail), Vorname, Nachname, Geschlecht FROM Tabelle"
Aber eigentlich beabsichtige ich im Feld Email die enthaltenen Leerzeichen durch Replace auch aus den Texten zu entfernen. Eigentlich sollte es doch so klappen:
sSql = "SELECT Replace(EMail,Chr(32),"""") As EMail, Vorname, Nachname, Geschlecht FROM Tabelle"
Leider erhalte dann jedoch die einen Laufzeitfehler "Undefinierte Funktion 'Replace' in Ausdruck". Ich weiß jetzt echt nicht mehr weiter und hoffe, dass mir von euch jemand helfen kann.

Viele Grüße

Martin

  

Betrifft: Geht wohl nicht... ;-( von: Martin
Geschrieben am: 17.09.2014 12:44:56

Hallo,

ich probiere die ganze Zeit herum und stelle erst jetzt fest, dass Replace in Access anscheinend nicht unterstützt wird:
http://www.sql-server-performance.com/forum/threads/replace-access-vs-sql-2000.10656/

- das wäre ja wirklich ärgerlich. Kennt vielleicht jemand eine Alternative für mein Problem?

Viele Grüße

Martin


  

Betrifft: AW: Geht wohl nicht... ;-( von: Peter
Geschrieben am: 17.09.2014 13:50:04

Hallo

Ersetz die Leerzeichen in deinem Makro nachdem du die Antwort von Access erhalten hast. (VBA kennt ein Replace)


  

Betrifft: AW: Geht wohl nicht... ;-( von: Martin
Geschrieben am: 17.09.2014 19:17:45

Hallo Peter,

eigentlich ist der SQL-Befehl etwas länger:

sSql = "SELECT Trim(EMail), Vorname, Nachname, Geschlecht FROM Tabelle Where Not Trim(EMail) IN (" & strIn & ") ORDER BY Trim(EMail) ASC"
Es geht darum, dass nur die richtige Treffer gefiltert werden. Durch den IN-Abgleich mit ca. 2.500 Email-Adressen hilft mir dein Vorschlag leider nicht weiter. Ich hatte den vollständigen SQL-Befehl nicht gepostet, damit es übersichtlicher bleibt ;-)

Viele Grüße

Martin


  

Betrifft: AW: Geht wohl nicht... ;-( von: JoWE
Geschrieben am: 17.09.2014 19:39:49

Hallo Martin,

schreibe Dein Trim-Ergebnis doch in eine Variable, die Du dann in den SQL-String übergibst.
Etwa so:

Sub test
Dim vbEmail As String
vbEmail = Trim(Email)
sSql = "SELECT " & vbEmail & ", Vorname, Nachname, Geschlecht FROM Tabelle Where Not " _
  & vbEmail & " IN (" & strIn & ") ORDER BY " & vbEmail & " ASC"
End Sub
Gruß
Jochen


  

Betrifft: AW: Geht vielleicht doch... von: JoWE
Geschrieben am: 17.09.2014 19:45:21

hast Du diese Site schon mal besucht?

http://www.techonthenet.com/access/functions/string/replace.php

Gruß
Jochen


  

Betrifft: AW: oder siehe hier... von: JoWE
Geschrieben am: 17.09.2014 19:49:37


http://www.smallsql.de/doc/sql-functions/string/replace.html