Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
SQL Array
zurück: Feldinhalt einer Tabelle als Bedingung weiter: Tage Differenz verbleibend Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
peXeq
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Apr 2014, 08:35
Rufname:

SQL Array - SQL Array

Nach oben
       Version: Office 2010

Hallo,

könnt Ihr mit weiterhelfen, was mache ich falsch?
Ich bekomme die Fehlermeldung "Laufzeitfehler '3085': Undefinierte Funktion 'repW' in Ausdruck.

Code:

Sub GRV_Clear()

Dim strSQL As String
Dim repW As Variant
Dim i As Integer

repW = Array("Personalabteilung", "'Personalbüro", "Personalabt.")

For i = 1 To 3
    strSQL = "UPDATE GRV_Bestand SET GRV_Bestand.[Firma] = Replace([Firma],repW(i),'');"
    DoCmd.RunSQL strSQL
Next

End Sub


Danke & Grüße
peX
Nouba
nicht ganz unwissend :)


Verfasst am:
28. Apr 2014, 08:46
Rufname:
Wohnort: Berlin

AW: SQL Array - AW: SQL Array

Nach oben
       Version: Office 2010

Hallo,

wenn Du statt DoCmd.RunSQL den Ausdruck MsgBox einsetzt, siehst Du, was Du produzierst. Was Du erreichen willst, weiß ich allerdings nicht.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
peXeq
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Apr 2014, 09:06
Rufname:

AW: SQL Array - AW: SQL Array

Nach oben
       Version: Office 2010

Hallo,

naja ich habe ein Array mit voerst 3 Werten erstellt und mit der FOR Schleife wollte ich diese 3 Werte durchgehen.

repW(1) sollte dann Personalbüro entsprechen. Oder denke ich da falsch?
Dann sollte eigentlich UPDATE alle Datensätze in der Spalte "Firma" die Werte im Array löschen bzw. durch LEER ersetzen.
Ich habe das Array innerhalb des UPDATES jetzt nochmal in Hochkomma gesetzt, da lässt er mich zwar durch den Code durch, aber erst ändert nichts.

Code:
Sub GRV_Clear()

Dim strSQL As String
Dim repW As Variant
Dim i As Integer

repW = Array("Personalabteilung", "Personalbüro", "Personalabt.")

For i = 0 To 2
    strSQL = "UPDATE GRV_Bestand SET GRV_Bestand.[Firma] = Replace([Firma],'repW(i)','');"
    'MsgBox strSQL
    'MsgBox repW(1)
    DoCmd.RunSQL strSQL
Next

End Sub


Danke & Grüße
peX
Gast



Verfasst am:
28. Apr 2014, 09:25
Rufname:

AW: SQL Array - AW: SQL Array

Nach oben
       Version: Office 2010

Datenbankprogrammierung begint mit dem Datenmodell!
In einer Spalte (DB-Feld) stehen keine Datensätze sondern Werte.
Zitat:
...die Werte im Array löschen bzw. durch LEER ersetzen

Du willst also bei allen Datensätze die im Feld "Firma" Personalabteilung, Personalbüro oder Personalabt. stehen haben. das Feld leeren?
Das sollte mit einem Statement gehen:
Code:
UPDATE GRV_Bestand SET GRV_Bestand.[Firma] = '' WHERE [Firma] In ("Personalabteilung", "Personalbüro", "Personalabt.")


Wäre noch interessant zu Wissen, warum Du das machst.
(Diesbezüglich der erste Satz)

HTH
Nouba
nicht ganz unwissend :)


Verfasst am:
28. Apr 2014, 09:32
Rufname:
Wohnort: Berlin

AW: SQL Array - AW: SQL Array

Nach oben
       Version: Office 2010

Hallo,

wenn Du, wie empfohlen, Du Dir das Ergenis in einer MsgBox ansiehst, wirst Du feststellen, dass innerhalb einer Zeichenkette "..." keine im Code zuvor verwendeten Funktionen, Prozeduren oder Variablen bekannt sind.

Was Du genau vor hast, weiß ich immer noch nicht. Was willst Du denn ersetzen? Anscheinend heißen die Felder so, wie sie im Array vorliegen. Aber dann kann man die Aktualisierung in einer Abfrage vornehmen.
Code:
UPDATE Tabellenname
   SET Feldname1 = Null,
       Feldname2 = Null,
       Feldname3 = Null;

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
28. Apr 2014, 10:10
Rufname:

AW: SQL Array - AW: SQL Array

Nach oben
       Version: Office 2010

Hallo,

ich würde anhand Deiner Angaben auch vermuten, daß das, was Gast geschrieben hat, am ehesten hinkommt.

Statt aber feste Werte zu verwenden im SQL-String oder eine VBA-Funktion mit einem Array dann auch wieder mit festen Werten zu befüllen und mit Codegefummel in einen SQL-String einzubauen, einfach mal datenbanktechnisch denken:

Erstelle eine Tabelle, die die benötigten Werte enthält und ggf. noch zusätzliche Spalten, anhand derer sich bestimmte Werte der Tabelle je nach Zweck zusammenfassen lassen, dann kannst Du den Rest mit einem SQL-Befehl erledigen, der leicht modifiziert dem entspricht, was Gast geschrieben hat (Name der Tabelle mal als "tblFirmen" angenommen und Feld für Firmenname als "F_Firma"):

Code:
UPDATE GRV_Bestand SET GRV_Bestand.[Firma] = '' WHERE [Firma] In (SELECT F_Firma FROM tblFirmen)

bzw. mit zusätzlichem WHERE in der Unterabfrage, wenn man nur bestimmte Werte aus tblFirmen haben möchte.

Allerdings ergeben sich aus Deinen Bezeichnungen andere Fragen:
- wieso ist "Personalbüro" in einer Spalte namens "Firma"?
- wieso sind alle drei Werte inhaltlich identisch?
- wieso setzt man so ein Feld auf einen Leerstring, wenn die Tabelle "GRV_Bestand" heißt, sprich: Was für einen Zweck erfüllt die Tabelle und warum wird der Wert nicht mehr gebraucht? Ich könnte ja verstehen, wenn Du den Wert auf einen einheitlichen Wert setzt, um unterschiedliche Schreibweisen anzugleichen, dann wäre die tblFirmen stattdessen eine Ersetzungstabelle, bei der man eine Spalte für die verschiedenen Schreibweisen verwendet und eine weitere für den immer gleichen Ersatzwert.

Oft ist es besser, einfach mal ein Vorhaben detaillierter zu erläutern, um einen vielleicht schon falsch eingeschlagenen Weg zu korrigieren, der so einen Code gleich überflüssig macht.

Und, was vielleicht in den Erläuterungen von Nouba nicht so klar geworden ist: Du kannst keine Variablen oder Prozeduren aus VBA in SQL einsetzen, lediglich Public Functions, die in einem Standardmodul deklariert wurden. Um Werte aus Variablen in einen String einzusetzen, geht also nicht:
Code:

Dim strVar(3) As String
Dim i As Long
strSQL = "SELECT strVar(i) FROM MyTable"

sondern nur:
Code:
Dim strVar(3) As String
Dim i As Long
strSQL = "SELECT " & strVar(i) & " FROM MyTable"


Aber wie gesagt, erst mal SQL denken, und dann VBA.

Gruß

Christian
peXeq
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Apr 2014, 14:52
Rufname:

AW: SQL Array - AW: SQL Array

Nach oben
       Version: Office 2010

Hallo,

Danke für die zahlreichen Antworten.

Es ist so, wir bekommen von einer Schnittstelle jede Menge Daten geliefert, in diesen Daten stehen aber teilweise Informationen die nicht notwendig sind wie z. B. Personalabteilung. In dem Datensatz steht dann z. B. Excel Deutschland GmbH Personalabteilung.

Danke & Grüße
peX
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
28. Apr 2014, 15:48
Rufname:

AW: SQL Array - AW: SQL Array

Nach oben
       Version: Office 2010

Hallo,

das erklärt schon einiges mehr.

In dem Fall sollte es so funktionieren (wenn die zu ersetzenden Daten in tblReplace in den Feldern F_Find und F_Replace stehen):

Code:
UPDATE GRV_Bestand AS B, tblReplace AS R
 SET B.Firma = Replace(B.Firma, R.F_Find,F_Replace)


Hierbei wird einfach aus beiden Tabellen ein Kreuzprodukt erstellt (also jede Zeile der einen Tabelle mit jeder Zeile der anderen kombiniert) und dann für jede Zeile ein Replace durchgeführt. Am Ende hast Du in GRV_Bestand nur noch die ersetzten Werte und brauchst lediglich in der Tabelle "tblReplace" alles hinzuzufügen, was Du gegen irgendwas Anderes ersetzt haben möchtest.

Gruß

Christian
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: SQL abfrage in einer Tabelle Speichern 0 Oberwald 2284 27. Jun 2005, 17:08
Oberwald SQL abfrage in einer Tabelle Speichern
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Befehle in MS Access 1 kpf 5618 02. Mai 2005, 12:56
stpimi SQL Befehle in MS Access
Keine neuen Beiträge Access Tabellen & Abfragen: SQL : Datenbank löschen 1 cfl2si 7440 23. März 2005, 12:30
Willi Wipp SQL : Datenbank löschen
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Gruppierung -AXP 2 nepokat 601 03. Feb 2005, 08:46
nepokat SQL Gruppierung -AXP
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Access Tabellen & Abfragen: Objekte (TextBoxen) Array als namen??? 1 Gast 573 09. Dez 2004, 16:13
Willi Wipp Objekte (TextBoxen) Array als namen???
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle per SQL umbennen (Access 2000) 2 DerPater 1084 09. Dez 2004, 14:02
Gast Tabelle per SQL umbennen (Access 2000)
Keine neuen Beiträge Access Tabellen & Abfragen: Access SQL auskommentieren 2 excalibur 7156 21. Nov 2004, 20:24
excalibur1 Access SQL auskommentieren
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Access Tabellen & Abfragen: Wenn-Dann-Sonst in SQL??? 2 SCHNEEMANN 998 18. Okt 2004, 17:26
Willi Wipp Wenn-Dann-Sonst in SQL???
Keine neuen Beiträge Access Tabellen & Abfragen: Wenn SQL Abfrage keine Werte gefunden hat, dann... 6 Danny G. 1787 30. Sep 2004, 18:19
Willi Wipp Wenn SQL Abfrage keine Werte gefunden hat, dann...
Keine neuen Beiträge Access Tabellen & Abfragen: SQL - Abfrage ob ein Wert in der Tabelle enthalten ist 1 notausgang 1301 23. Sep 2004, 09:42
stpimi SQL - Abfrage ob ein Wert in der Tabelle enthalten ist
Keine neuen Beiträge Access Tabellen & Abfragen: Mehrfachauswahl aus Listenfeld kombiniert mit SQL IN (...) 2 SMArmageddon 2417 01. Sep 2004, 15:07
SMArmageddon Mehrfachauswahl aus Listenfeld kombiniert mit SQL IN (...)
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Abfrage 2 Gast 970 20. Jul 2004, 17:29
Gast SQL Abfrage
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Project