Zeilen kombinieren / Zeilen verketten

8

Ich bin auf der Suche nach einer Access 2007-Entsprechung der SQL Server-Funktion COALESCE.

In SQL Server können Sie Folgendes tun:

Person

%Vor%

SQL

%Vor%

Was produziert: John, Steve, Richard

Ich möchte dasselbe aber in Access 2007 machen.

Kann jemand Zeilen wie diese in Access 2007 kombinieren?

    
Jordan Arron 18.09.2008, 13:50
quelle

5 Antworten

13

Hier finden Sie eine Beispiel-benutzerdefinierte Funktion (UDF) und mögliche Verwendung.

Funktion:

%Vor%

Verwendung:

%Vor%

Eine ADO-Version, inspiriert von einem Kommentar von onedaywhen

%Vor%

Von: Ссылка

    
Fionnuala 18.09.2008, 15:56
quelle
0

Ich denke, Nz ist was du willst, Syntax ist Nz(variant, [if null value]) . Hier ist der Link zur Dokumentation: Nz-Funktion

%Vor%     
Nick Craver 18.09.2008 14:12
quelle
0

Obwohl Nz mit COALESCE vergleichbar ist, können Sie es nicht in Access verwenden, um die Operation auszuführen, die Sie ausführen. Es ist nicht die COALESCE, die die Liste der Zeilenwerte erstellt, es ist die Verkettung zu einer Variablen.

Leider ist dies nicht möglich innerhalb einer Access-Abfrage, die eine einzelne SQL-Anweisung sein muss und wo es keine Möglichkeit gibt, eine Variable zu deklarieren.

Ich denke, Sie müssten eine Funktion erstellen, die eine Ergebnismenge öffnet, darüber iteriert und die Zeilenwerte zu einer Zeichenkette verkettet.

    
Rikalous 18.09.2008 14:38
quelle
0

Um Zeilen in Access zu kombinieren, benötigen Sie wahrscheinlich Code, der ungefähr so ​​aussieht:

%Vor%

Sie möchten Code zur Fehlerbehandlung hinzufügen und Ihr Recordset bereinigen. Dies wird sich leicht ändern, wenn Sie ADO anstelle von DAO verwenden, aber die allgemeine Idee ist dieselbe.

    
Dave DuPlantis 18.09.2008 14:58
quelle
0

Ich verstehe hier, dass Sie eine Tabelle "Person" mit 3 Datensätzen haben. Es gibt nichts vergleichbar mit dem, was Sie in Access beschreiben.

In "Standard" Access (DAO-Recordset) müssen Sie ein Recordset öffnen und verwenden Sie die Getrows-Methode, um Ihre Daten

zu haben %Vor%

Sobald Sie dieses Array haben (es wird zweidimensional sein), können Sie es manipulieren, um die "Spalte" zu extrahieren, die Sie benötigen. Es könnte eine schlaue Art sein, ein eindimensionales Array daraus zu extrahieren, so dass Sie dann die "Join" -Anweisung verwenden können, um jeden Array-Wert in einer Zeichenfolge zu verketten.

    
Philippe Grondier 18.09.2008 15:02
quelle