Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten in SQL DB schreiben

Daten in SQL DB schreiben
06.03.2023 06:44:34
stef26
Guten Morgen liebe Excel Profis,
ich hab da mal ne Frage zu einem Thema, was leider meine Excel VBA Kenntnisse völlig überfordert....
Ich habe Daten in einem Tabellenblatt "Daten" in den Zellen A1 : D50 stehen.
Diese möchte ich in eine SQL Datenbank schreiben. (anhängen an die nächste freie Stelle)
Dies soll vom Benutzer manuell über einen Makroaufruf geschehen.
Ich hab da im Netz nicht all zu viel dazu gefunden.
ALTER TRIGGER [dbo].[tr_UPDATE_FORECAST]
ON [dbo].[FORECAST_SPREADSHEET]
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON;
DELETE A FROM FORECAST_DATA A INNER JOIN INSERTED B ON B.ORG_CODE = A.ORG_CODE AND B.ID = A.EVENT_ID
INSERT INTO FORECAST_DATA SELECT
ORG_CODE
,ID
,ADD_SERVICE_INCOME
,TOTAL_CATERING_EXPENSES
FROM INSERTED
END
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.ScreenUpdating = False Then Exit Sub
If Target.Value > "" And IsNumeric(Target.Value) = False Then
Target.Value = ""
MsgBox ("Value must be numeric!")
Exit Sub
End If
Dim updateSQL As String
Dim orgCode As String
Dim eventID As String
Dim columnName As String
Dim newValue As String
orgCode = Range("A" & Target.Row).Value
If orgCode = "" Then Exit Sub
eventID = Range("D" & Target.Row).Value
columnName = Cells("1", Target.Column).Value
newValue = IIf(Target.Value = "", "NULL", Target.Value)
updateSQL = "UPDATE FORECAST_SPREADSHEET SET " & columnName & " = " & newValue & " WHERE ORG_CODE = '" & orgCode & "' AND ID = " & eventID
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Const stADO As String = "Provider=SQLOLEDB.1;User ID=User;Password=Password;Persist Security Info=False;" & _
"Initial Catalog=EBMS1920;Data Source=sql-01"
Set cnt = New ADODB.Connection
With cnt
.CursorLocation = adUseClient
.Open stADO
.CommandTimeout = 0
Set rst = .Execute(updateSQL)
End With
selectSQL = "SELECT * FROM FORECAST_SPREADSHEET WHERE ORG_CODE = '" & orgCode & "' AND ID = " & eventID
Set rst = cnt.Execute(selectSQL)
Application.EnableEvents = False
For i = 0 To rst.Fields.Count - 1
ActiveSheet.Cells(Target.Row, i + 1) = rst.Fields(i).Value
Next i
Application.EnableEvents = True
cnt.Close
Set rst = Nothing
Set cnt = Nothing
ActiveSheet.PivotTables(1).RefreshTable
End Sub
Leider kann ich das was ich gefunden habe (hier wird über einen Trigger das Ganze übertragen, was ich nicht möchte) nicht für meine Bedürfnisse anpassen.
Vielleicht könntet ihr mich da unterstützen?
Gruß
Stef26

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in SQL DB schreiben
06.03.2023 12:44:02
Yal
Hallo Stef,
Google-Key:
https://www.google.com/search?q=vba+adodb+update
In den Ergebnis, in der Regel die Links von Learn.microsoft.com bevorzügen, weil kein Werbung und der Aufbau immer dasselbe ist, was die Erfassung des Wesentlichen deutlich beschleunigt.
Aber in dem fall eher den Stackoverflow nehmen (Aufbau mit grosse Wiedererkennungswert)
https://stackoverflow.com/questions/26611785/updating-sql-database-using-vba-adodb-connection
VG
Yal
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige