SQL Tabellenspalte mit Zahlen
Hallo Zusammen
Ich habe ein VBA Sub welches in meine Datenbank schreibt. Das Klappt solange gut solange ich nicht dafür eine Spalte wie zB "110Historie" verwende. Ich hab schon versucht mit unter ' zu stellen oder unter [ jedoch klappt auch nicht.
Funktioniert:
INSERT INTO ProjektRegisterBearbeitszeit (MitarbeiterId, Bearbeitungsdatum, Inhaltsverzeichnis) VALUES ('101044', '24.02.2021', '20:33:18')
Funktioniert nicht:
INSERT INTO ProjektRegisterBearbeitszeit (MitarbeiterId, Bearbeitungsdatum, 110Historie) VALUES ('101044', '24.02.2021', '20:10:15')
Bitte um Mithilfe
Public Sub RegisterZeitInsertSQL()
Dim conn As New ADODB.Connection 'Rev b
Dim rec As New ADODB.Recordset
Dim comm As New ADODB.Command
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
Dim WSAktiveZeit As String
Mitarbeiter = Application.UserName 'Rev b
ArbeitsBeginn = Format(Now(), "hh:mm:ss") 'Rev b
Datum = Date 'Rev b
WSAktiveZeit = ActiveSheet.Name
If WSAktiveZeit Like "*.*" Then 'SCHLEIFE 11.000 Rev b
WSAktiveZeit = Replace(WSAktiveZeit, ".", "")
End If 'SCHLEIFE 11.000 Rev b
If WSAktiveZeit Like "* *" Then 'SCHLEIFE 12.000 Rev b
WSAktiveZeit = Replace(WSAktiveZeit, " ", "0")
End If 'SCHLEIFE 12.000 Rev b
MitarbeiterID = MitarbeiterPersNr(Mitarbeiter) 'Rev b
conn.Open "driver={SQL Server};" & _
"server=RSST-OFFICEIII\RSSTSQLSERVER;database=RSSTProjektArbeitszeit;" 'Rev b
Set comm.ActiveConnection = conn 'Rev b
SQLString = "INSERT INTO ProjektRegisterBearbeitszeit (" _
& "MitarbeiterId, Bearbeitungsdatum, " & WSAktiveZeit & ")" _
& " VALUES " _
& "('" & MitarbeiterID & "'," _
& " '" & Datum & "'," _
& " '" & ArbeitsBeginn & "')" 'Rev b
Debug.Print SQLString 'Rev b
comm.CommandText = SQLString
rec.Open comm 'Rev b
conn.Close
End Sub
Ich habe ein VBA Sub welches in meine Datenbank schreibt. Das Klappt solange gut solange ich nicht dafür eine Spalte wie zB "110Historie" verwende. Ich hab schon versucht mit unter ' zu stellen oder unter [ jedoch klappt auch nicht.
Funktioniert:
INSERT INTO ProjektRegisterBearbeitszeit (MitarbeiterId, Bearbeitungsdatum, Inhaltsverzeichnis) VALUES ('101044', '24.02.2021', '20:33:18')
Funktioniert nicht:
INSERT INTO ProjektRegisterBearbeitszeit (MitarbeiterId, Bearbeitungsdatum, 110Historie) VALUES ('101044', '24.02.2021', '20:10:15')
Bitte um Mithilfe
Public Sub RegisterZeitInsertSQL()
Dim conn As New ADODB.Connection 'Rev b
Dim rec As New ADODB.Recordset
Dim comm As New ADODB.Command
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
Dim WSAktiveZeit As String
Mitarbeiter = Application.UserName 'Rev b
ArbeitsBeginn = Format(Now(), "hh:mm:ss") 'Rev b
Datum = Date 'Rev b
WSAktiveZeit = ActiveSheet.Name
If WSAktiveZeit Like "*.*" Then 'SCHLEIFE 11.000 Rev b
WSAktiveZeit = Replace(WSAktiveZeit, ".", "")
End If 'SCHLEIFE 11.000 Rev b
If WSAktiveZeit Like "* *" Then 'SCHLEIFE 12.000 Rev b
WSAktiveZeit = Replace(WSAktiveZeit, " ", "0")
End If 'SCHLEIFE 12.000 Rev b
MitarbeiterID = MitarbeiterPersNr(Mitarbeiter) 'Rev b
conn.Open "driver={SQL Server};" & _
"server=RSST-OFFICEIII\RSSTSQLSERVER;database=RSSTProjektArbeitszeit;" 'Rev b
Set comm.ActiveConnection = conn 'Rev b
SQLString = "INSERT INTO ProjektRegisterBearbeitszeit (" _
& "MitarbeiterId, Bearbeitungsdatum, " & WSAktiveZeit & ")" _
& " VALUES " _
& "('" & MitarbeiterID & "'," _
& " '" & Datum & "'," _
& " '" & ArbeitsBeginn & "')" 'Rev b
Debug.Print SQLString 'Rev b
comm.CommandText = SQLString
rec.Open comm 'Rev b
conn.Close
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 655658
Url: https://administrator.de/contentid/655658
Ausgedruckt am: 26.11.2024 um 20:11 Uhr
13 Kommentare
Neuester Kommentar
Moin,
Eine Fehlermeldung wäre interessant.
Ferner hilft es mir (beim Debuggen) immer, wenn ich das SQL-Statement einmal irgendwo als Text/ MsgBox hinschreibe...
Dann sehe ich auch, was er da zusammenbaut.
Z.B. mit
Ich vermute mal, er findet den Spaltennamen "110Historie" nicht, weil es den in der Datenbank-Tabelle nicht gibt. Wenn du den Spaltennamen der Tabelle in der DB mit "Inhaltsverzeichnis" fest setzt, klappt es ja.
PS:
Nutze bitte Code-Tags.
Links, neben dem Textfeld gibt es div. Symbole. Das </> wäre das geeignete
Gruß
em-pie
Funktioniert nicht
ist eine nichts sagende Fehlerbeschreibung.Eine Fehlermeldung wäre interessant.
Ferner hilft es mir (beim Debuggen) immer, wenn ich das SQL-Statement einmal irgendwo als Text/ MsgBox hinschreibe...
Dann sehe ich auch, was er da zusammenbaut.
Z.B. mit
Sheets(ActiveSheet.Name).Range("A1") = SQLString
Ich vermute mal, er findet den Spaltennamen "110Historie" nicht, weil es den in der Datenbank-Tabelle nicht gibt. Wenn du den Spaltennamen der Tabelle in der DB mit "Inhaltsverzeichnis" fest setzt, klappt es ja.
PS:
Nutze bitte Code-Tags.
Links, neben dem Textfeld gibt es div. Symbole. Das </> wäre das geeignete
Gruß
em-pie
Zitat von @RSST-SOR:
Und das ist 1:1 so aus Excel herauskopiert?INSERT INTO ProjektRegisterBearbeitszeit (MitarbeiterId, Bearbeitungsdatum, 110Historie) VALUES ('101044', '24.02.2021', '21:05:10')
>
Ich habe die Vermutung, da hängt irgendwo noch ein verstecktes Steuerzeichen o.Ä.
Kannst du, wenn du das Statement einmal per Copy&Paste ins Management Studio bringst, dann Fehlerfrei ausführen?
Funktioniert:
INSERT INTO ProjektRegisterBearbeitszeit (MitarbeiterId, Bearbeitungsdatum, Inhaltsverzeichnis) VALUES ('101044', '24.02.2021', '20:33:18')
Funktioniert nicht:
INSERT INTO ProjektRegisterBearbeitszeit (MitarbeiterId, Bearbeitungsdatum, 110Historie) VALUES ('101044', '24.02.2021', '20:10:15')
INSERT INTO ProjektRegisterBearbeitszeit (MitarbeiterId, Bearbeitungsdatum, Inhaltsverzeichnis) VALUES ('101044', '24.02.2021', '20:33:18')
Funktioniert nicht:
INSERT INTO ProjektRegisterBearbeitszeit (MitarbeiterId, Bearbeitungsdatum, 110Historie) VALUES ('101044', '24.02.2021', '20:10:15')
Nicht alles, was man im Spaltennamen eintippen kann, sollte auch verwendet werden. Je nach Kompatibilitätslevel der DB sollte er eben nicht mit einer Zahl beginnen. Falls doch gilt wie immer die Regel:
When identifiers are used in Transact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets.
Zitat von @mbehrens:
When identifiers are used in Transact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets.
Jo, recht hast du, bzw. deine Quelle When identifiers are used in Transact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets.
Zitat von @RSST-SOR:
Ich hab schon versucht mit unter ' zu stellen oder unter [ jedoch klappt auch nicht.
Ich hab überlesen, dass er nur ein ' und kein " nutzte...Ich hab schon versucht mit unter ' zu stellen oder unter [ jedoch klappt auch nicht.
Mit einem
SQLString = "INSERT INTO ProjektRegisterBearbeitszeit (" _
& "MitarbeiterId, Bearbeitungsdatum, " & """" & WSAktiveZeit & """" & ")" _
& " VALUES " _
& "('" & MitarbeiterID & "'," _
& " '" & Datum & "'," _
& " '" & ArbeitsBeginn & "')" 'Rev b
Zitat von @RSST-SOR:
Habe daher folgendes Versucht:
Nicht alles, was man im Spaltennamen eintippen kann, sollte auch verwendet werden. Je nach Kompatibilitätslevel der DB sollte er eben nicht mit einer Zahl beginnen. Falls doch gilt wie immer die Regel:
When identifiers are used in Transact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets.
When identifiers are used in Transact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets.
Habe daher folgendes Versucht:
INSERT INTO ProjektRegisterBearbeitszeit (MitarbeiterId, Bearbeitungsdatum, (110Historie)) VALUES ('101044', '24.02.2021', '21:59:42')
>
engl.: brackets [AE] oder square brackets [BE], Unicode: U+005B und U+005D .
MSSQL nutzt von Haus aus eckige Klammern um Schlüsselwörter etc. in Spalten- oder Tabellennamen zu ermöglichen - @em-pie hat es bereits geschrieben.
INSERT INTO [tabelle]([spalte1],[spalte2]) VALUES(123,'Text');