Nogen der kan fortælle mig en måde at opdater en database i excel. Jeg kan sagtens indlæse dataen fra databasen i Excel, men kan ikke få lov til at opdatere databasen.
Når du skriver databasen - er det så en MS SQL server, MySQL etc?
OBS hvis du bare skal opdatere et par hundrede linjer - så drop excel - der er SSIS eller powershell eller lign meget bedre - nedenstående VBA kan forbedres ved at lave et loop hvor du indsætter 100 linjer ad gangen eller lign..
VBA for at indsætte (
Sub DB_insert() 'Tilføj Tools > references > Microsoft ActiveX Data Objects 2.8 Library
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim sConnString As String Dim SQL As String Dim x As Integer Dim count As String
'Kører SQLen Set rs = conn.Execute(SQL) x = x + 1 Loop
' Ryder op If CBool(conn.State And adStateOpen) Then conn.Close Set conn = Nothing Set rs = Nothing Application.ScreenUpdating = True MsgBox "done" End Sub
du kan lave det som en funktion - så du fx. kan lave en formel der hedder
updDB(id, felt1,felt2)
her er den som almindelig sub
Sub exp() 'Tilføj Tools > references > Microsoft ActiveX Data Objects 2.8 Library
Dim MyCon As New ADODB.Connection Dim RS As New ADODB.Recordset 'til de data vi trækker ud fra recordsettet Dim ConStr As String Dim SQL As String Dim y As Integer Dim za As Integer Dim SQL_2 As String Dim x As Integer
'Hvis det er en database med en SQL bruger ConStr = "Provider=sqloledb;Data Source=DIN_DB_SERVER;Initial Catalog=DATABASE; " & _ "User ID=DIT_BRUGERNAVN; Password=DIT_PASSWORD;"
'Hvis det er med windows bruger ' ConStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI; Initial Catalog=DATABASE;Data Source=DIN_DB_SERVER;Persist Security Info=False" 'Databasen vi bruger
Set MyCon = New ADODB.Connection MyCon.ConnectionString = ConStr
SQL = "SELECT Count(ID) as Antal FROM tabel " & _ "WHERE tabel.id = '" & Range("celle med id").Value & "'"
MyCon.Open (ConStr) Set RS = MyCon.Execute(SQL)
za = RS.Fields.Item("antal") 'bruger antal til at se om der er nogen RS.Close MyCon.Close
'hvis der en linje med det ID - ergo skal opdatere ikke insætte If za > 0 Then
'Opdaterer eksisterende - hvis data findes 'update 12-05-2015 med convert på dato... SQL_2 = "UPDATE tabel SET " & _ "feltnavn1 = '" & Range(feltnavn1).Value & "'," & _ "Feltnavn2 = '" & Range(feltnavn1).Value & "'" & _ " WHERE tabel.id = '" & Range("din_celle_med_id").Value & "'"
'
Else
'Sætter ind - hvis data ikke findes SQL_2 = "INSERT INTO tabel(feltnavn1, feltnavn2, id) " & _ "VALUES ('" & Range("feltnavn1").Value & "','" & Range(feltnavn2).Value & "','" & Range("din_celle_med_id").Value & "')"
Hej Komputerdk, beklager jeg har været så længe væk. I det du skriver skal man have brugernavn og kodeord i filen i klar tekst og det er jeg ikke så vild med og slet ikke når jeg bruger Windows authentication. Der må være en anden måde hvor på det er muligt at åbne en database i Excel og sende ændringer fra Excel til databasen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.