Avatar billede komputerdk Mester
15. april 2015 - 15:35 Der er 2 kommentarer og
1 løsning

SQL Update fra Excel bytter om på måned og dag

Jeg har en vba kode der henter datoer etc. fra nogle PDF filer (synsindkaldelser) - disse informationer skal så ind i en MS SQL server 2000.

på serveren er feltet Synsdato sat til smalldatetime
og i excelarket står det som dd-mm-åååå
jeg har prøvet med cDate før den rammer nedenstående funktion, men den bytter om på måned og dag, så 01-07-2015 bliver til 07-01-2015 :(  datoer hvor dagen er over den 12ende, kan den godt finde ud af..

jeg synes jeg har lavet alle mulige krumspring med at bygge om på formatet så det er på Engelsk etc - men går galt :(

funktionen:

Public Function SQL_Updater(ByVal Vsklbnr As String, ByVal Vsendt_til As String, ByVal VWhench As String, ByVal vsynsdato As String, ByVal vsynet As Integer) As String
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 DBpath As String
Dim za As Integer
Dim SQL_2 As String
Dim x As Integer

DBpath = "d:\EBoks\eboks.mdb"

ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBpath & ";Persist Security Info=False" 'Databasen vi bruger
'MyCon.ConnectionString = ConStr
Set MyCon = New ADODB.Connection
MyCon.Open (ConStr)

SQL = "SELECT Count(SKLBNR) as Antal FROM PeriodiskSyn " & _
        "WHERE PeriodiskSyn.Sklbnr = " & Vsklbnr
       
Set RS = MyCon.Execute(SQL)
       
za = RS.Fields.Item("antal") 'bruger antal til at se om der er nogen
RS.Close
MyCon.Close

If za > 0 Then

'Opdaterer eksisterende - hvis data findes
    SQL_2 = "UPDATE PeriodiskSyn SET " & _
            "sendt_til = '" & Vsendt_til & "'," & _
            "Whench = '" & VWhench & "'," & _
            "Synsdato = '" & vsynsdato & "'," & _
            "Synet = '" & vsynet & "'" & _
            " WHERE sklbnr = " & Vsklbnr
 

Else
 
  'Sætter ind - hvis data ikke findes
    SQL_2 = "INSERT INTO PeriodiskSyn (Sklbnr, Sendt_til, Whench, Synsdato, Synet) " & _
            "VALUES ('" & Vsklbnr & "','" & Vsendt_til & "','" & VWhench & "','" & vsynsdato & "','0')"
 
End If

MyCon.Open      'åbner connection
RS.Open SQL_2, MyCon, adOpenDynamic 'åber sql'en
MyCon.Close
Log = Log & "SQLupdater " & Now & vbCrLf
End Function
Avatar billede bak Seniormester
22. april 2015 - 17:19 #1
prøv lige dette

If za > 0 Then

'Opdaterer eksisterende - hvis data findes
    SQL_2 = "UPDATE PeriodiskSyn SET " & _
            "sendt_til = '" & Vsendt_til & "'," & _
            "Whench = '" & VWhench & "'," & _
            "Synsdato = CONVERT(SMALLDATETIME,'" & vsynsdato & "', 105)," & _
            "Synet = '" & vsynet & "'" & _
            " WHERE sklbnr = " & Vsklbnr
 

Else
 
  'Sætter ind - hvis data ikke findes
    SQL_2 = "INSERT INTO PeriodiskSyn (Sklbnr, Sendt_til, Whench, Synsdato, Synet) " & _
            "VALUES ('" & Vsklbnr & "','" & Vsendt_til & "','" & VWhench & "','" &  CONVERT(SMALLDATETIME,'" & vsynsdato & "', 105) & "','0')"
 
End If
Avatar billede komputerdk Mester
28. april 2015 - 16:54 #2
stringen bliver

UPDATE PeriodiskSyn SET sendt_til = 'LK7',Whench = '28-04-2015 16:47:49',Synet = '0',TekniskLok = 'M000-L202-D083-D083',betegnelse = 'Kørselsafdeling Ålborg (ABT)',opdatSynet = NULL,OpdatWhen = NULL,Andring = NULL, Synsdato = CONVERT(SMALLDATETIME,'01-07-2015', 105) WHERE sklbnr = 787961

men VBAen giver en runtime error 80040e14 , syntaxerror in the undefined CONVERT function :(
Avatar billede komputerdk Mester
29. juni 2015 - 05:59 #3
Løsningen var at lave connection direkte til serveren og ikke igennem en access mdb fil.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester