2017-10-15 1 views
1

Ich habe ein Feld mit Tausenden von Datensätzen. In diesen Aufzeichnungen gibt es eine Reihe von Namen.MS Access: Trennen von Vor- und Nachname in separate Felder

Das Problem ist, dass sowohl der Vor- als auch der Nachname zusammen aufgelistet sind (anstatt in zwei verschiedenen Feldern). Wie würde ich sie trennen? Das Format jetzt für den Namen ist John Smith

FirstName: Left([PlayerName],InStr([PlayerName]," ")-1) 

Ich versuchte dies aber es hat nicht funktioniert. Es zurückgegeben #Func! für jeden Datensatz in meinem FirstName Abfragefeld

Jede Hilfe würde geschätzt werden. Vielen Dank.

+0

Nick, geben Sie dies in den Abfrage-Generator ein? Ich füge Ihren Ausdruck in den Abfrage-Generator ein und es funktioniert einwandfrei. Oder erstellen Sie diese Abfrage in VBA-Code? Wie * genau * benutzt du es? – xpofer

+0

Ja, ich habe den Abfrage-Generator verwendet. Wie soll ich es benutzen? Ich wähle das Feld und die Spalte in der ersten Spalte aus. In der zweiten Spalte kopiere ich einfach das und ziehe es in die Zeile 'Feld' ein. –

+1

Diese Abfrage sollte im Abfrage-Generator vollständig funktionieren. Mit anderen Worten, solange Sie die Tabelle * showing * (die Tabelle, die [PlayerName] enthält) haben, fügen Sie Ihren Ausdruck in 'Field:' in der ersten Spalte ein. Das sollte alles sein, was du brauchst. Schau, ob es mit * nur dem * läuft. Um dies in der SQL-Ansicht zu überprüfen, sollte es wie folgt aussehen: 'SELECT Left ([FullName], InStr ([FullName]," ") -1) AS Vorname FROM T_Crewmembers;' – xpofer

Antwort

1

Ich denke, es gibt ein Problem mit den Daten in Ihrer ursprünglichen Tabelle, zum Beispiel: Es könnte ein Leerzeichen vor "John" in "John Smith" ("John Smith") sein.

Guter Weg zu überprüfen ist die Ersetzung Funktion.

SELECT Replace([PlayerName]," ","-") as [TestName] 
FROM YourTableName; 

Wenn vor Ihrem Vornamen ein Bindestrich steht. Das ist das Problem.

Sie können auch versuchen, die Funktion zu überprüfen, die Sie verwenden möchten. Für instr ([Start], [String1], [String2]) muss möglicherweise eine 1 im "[Start]" - Teil der Funktion platziert werden.

Grundsätzlich Ihre neue Funktion würde wie folgt aussehen:

FirstName: Left([PlayerName],instr(1,[PlayerName]," ")-1) 

Lassen Sie mich wissen, wenn eine dieser beiden Lösungen nicht funktionieren und krank nicht mehr zu graben.