Avatar billede robbin Nybegynder
10. august 2003 - 00:05 Der er 16 kommentarer og
2 løsninger

upload text file

Hey guys (and girls?) im stuck in the middle of a projekt and really needs some advice, now listen!

I want my vb program to automatic find a special file (text file) on my harddrive and upload to my ftp server!

I have already coded the search special file for myself but im not sure if it all works together!?!? so if anyone would help me I would appreciate it!
Avatar billede terry Ekspert
10. august 2003 - 10:11 #1
what help are you after?
Avatar billede terry Ekspert
10. august 2003 - 10:14 #2
You may be able to use this code for uploading via FTP
http://www.mvps.org/access/modules/mdl0015.htm

It is for Access, but as it is progarmmedin VBA then should work with VB too.
Avatar billede vbcoder Nybegynder
10. august 2003 - 14:09 #3
You could use wininet.dll. It has a lot of functions for accessing ftpservers


//vbcoder
Avatar billede vbcoder Nybegynder
10. august 2003 - 14:11 #4
Put the Internet control from the toolbox on your form - this accesses ftp-sites as well as www
Avatar billede vbcoder Nybegynder
10. august 2003 - 14:14 #5
Avatar billede martin_moth Mester
11. august 2003 - 14:27 #6
I have made a program that logs on to a server, and uploads a file from my local drive. I can paste the sourve to you when I get to my own PC on tuesday. Are you interesetd, or do you allready have an answar to tour question?

To search locally for a file, look at some answared questions here on E. I know there are some, since I answared a question regarding search for local files some time ago ;o)
Avatar billede robbin Nybegynder
12. august 2003 - 19:04 #7
Do you have mIRC msn or ICQ mail where we can talk?
or here that would be master help..!
Avatar billede martin_moth Mester
13. august 2003 - 07:43 #8
Nop. Men hvorfor taler vi egentligt engelsk (så i et andet sp. at du taler dansk)

Når min PC kommer på benene (onk torsdag) skal du nok få noget kode der kan uploade til en server. Det er meget simpelt, det er bare at bruge en kontrol, hvis navn jeg ikke kan huske...
Avatar billede robbin Nybegynder
13. august 2003 - 20:19 #9
lyder for nice! [:
Avatar billede martin_moth Mester
14. august 2003 - 08:17 #10
Må vente lidt endnu - Cybercity har ved en fejl lukket ned for min internetforbindelse, og den kommer nok først op fredag...
Avatar billede robbin Nybegynder
14. august 2003 - 16:32 #11
ok :)
Avatar billede vbcoder Nybegynder
15. august 2003 - 11:39 #12
Kode til ftp upload - bruger user kontrol

Fil 1 af 3

Denne kode pastes til en tom tekstfil der skal hedde form1.frm

'*********************
'kode start

VERSION 5.00
Begin VB.Form Form1
  Caption        =  "Form1"
  ClientHeight    =  4335
  ClientLeft      =  60
  ClientTop      =  345
  ClientWidth    =  5970
  LinkTopic      =  "Form1"
  ScaleHeight    =  4335
  ScaleWidth      =  5970
  StartUpPosition =  3  'Windows Default
  Begin Project1.ctlFTP ctlFTP1
      Left            =  5040
      Top            =  3000
      _ExtentX        =  1085
      _ExtentY        =  873
  End
  Begin VB.TextBox txtAdgangskode
      Height          =  285
      Left            =  3000
      TabIndex        =  9
      Top            =  1920
      Width          =  2655
  End
  Begin VB.TextBox txtBrugerNavn
      Height          =  285
      Left            =  3000
      TabIndex        =  8
      Top            =  1200
      Width          =  2655
  End
  Begin VB.TextBox txtServerNavn
      Height          =  285
      Left            =  3000
      TabIndex        =  7
      Top            =  600
      Width          =  2655
  End
  Begin VB.FileListBox File1
      Height          =  1650
      Left            =  120
      TabIndex        =  3
      Top            =  2520
      Width          =  2295
  End
  Begin VB.DirListBox Dir1
      Height          =  1440
      Left            =  120
      TabIndex        =  2
      Top            =  840
      Width          =  2295
  End
  Begin VB.DriveListBox Drive1
      Height          =  315
      Left            =  120
      TabIndex        =  1
      Top            =  240
      Width          =  2295
  End
  Begin VB.CommandButton Command1
      Caption        =  "Send Filen"
      Height          =  375
      Left            =  3840
      TabIndex        =  0
      Top            =  3720
      Width          =  1695
  End
  Begin VB.Label Label4
      AutoSize        =  -1  'True
      Caption        =  "Valgt fil :"
      Height          =  195
      Left            =  3000
      TabIndex        =  11
      Top            =  2520
      Width          =  600
  End
  Begin VB.Label lblFilename
      Height          =  195
      Left            =  3000
      TabIndex        =  10
      Top            =  2880
      Width          =  2760
  End
  Begin VB.Label Label3
      AutoSize        =  -1  'True
      Caption        =  "Adgangskode"
      Height          =  195
      Left            =  3000
      TabIndex        =  6
      Top            =  1560
      Width          =  990
  End
  Begin VB.Label Label2
      AutoSize        =  -1  'True
      Caption        =  "Brugernavn"
      Height          =  195
      Left            =  3000
      TabIndex        =  5
      Top            =  960
      Width          =  825
  End
  Begin VB.Label Label1
      AutoSize        =  -1  'True
      Caption        =  "FtpServer"
      Height          =  195
      Left            =  3000
      TabIndex        =  4
      Top            =  240
      Width          =  690
  End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Sub Command1_Click()
  With ctlFTP1
      .FtpUrl = txtServerNavn
      .Username = txtBrugerNavn
      .PassWord = txtAdgangskode
      ' sæt evt en sti på din ftp ellers er det roden
      .InitDir = "\"
      .Connect
      .UploadFile lblFilename, lblFilename
      .CloseSession
  End With
End Sub

Private Sub Dir1_Change()
  File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
  Dir1.Path = Drive1.List(Drive1.ListIndex)
End Sub

Private Sub File1_Click()
  lblFilename.Caption = File1.List(File1.ListIndex)
End Sub

'kode slut
'*************************
Avatar billede vbcoder Nybegynder
15. august 2003 - 11:41 #13
fil 2 af 3

denne kode pastes i en tom text fil med navnet ctlFTP.ctl

'******************
'kode start
VERSION 5.00
Object = "{48E59290-9880-11CF-9754-00AA00C00908}#1.0#0"; "MSINET.OCX"
Begin VB.UserControl ctlFTP
  CanGetFocus    =  0  'False
  ClientHeight    =  1320
  ClientLeft      =  0
  ClientTop      =  0
  ClientWidth    =  900
  ClipControls    =  0  'False
  InvisibleAtRuntime=  -1  'True
  ScaleHeight    =  1320
  ScaleWidth      =  900
  Begin InetCtlsObjects.Inet Inet1
      Left            =  0
      Top            =  480
      _ExtentX        =  1005
      _ExtentY        =  1005
      _Version        =  393216
      Protocol        =  2
      RemotePort      =  21
      URL            =  "ftp://"
  End
  Begin VB.Label Label1
      BackColor      =  &H0000FF00&
      Caption        =  "FTP"
      BeginProperty Font
        Name            =  "Trebuchet MS"
        Size            =  15.75
        Charset        =  0
        Weight          =  400
        Underline      =  0  'False
        Italic          =  0  'False
        Strikethrough  =  0  'False
      EndProperty
      ForeColor      =  &H000000FF&
      Height          =  495
      Left            =  0
      TabIndex        =  0
      Top            =  0
      Width          =  615
  End
End
Attribute VB_Name = "ctlFTP"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

'-------------------------------------------------------------------------------------------'
'  This code is developed by Ronald Kas (r.kas@kaycys.com)                                '
'  from Kaycys (http://www.kaycys.com).                                                    '
'                                                                                          '
'  You may use this for all purposes except from making profit with it.                    '
'  Check our site regulary for updates.                                                    '
'-------------------------------------------------------------------------------------------'


Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long

Enum EnumBusyWith
    bwNothing = 0
    bwListing = 1
    bwDownloading = 2
    bwUploading = 3
    bwGetCurDir = 4
    bwGetResult = 5
End Enum



Public FtpUrl As String
Public Username As String
Public PassWord As String
Public TimeOut As Long
Public ProxyServer As String
Public ProxyPort As Long
Public InitDir As String
Public Files As New Collection
Public LogFile As String
Dim LoggingState As Boolean
Dim LastAction As EnumBusyWith
Dim CurDir As String
Dim sResponseString As String
Dim lResponseCode As Long

Event Error(ErrorCode As Long)

Public Sub Connect()
On Error Resume Next
    Inet1.Cancel
   
On Error GoTo LocalError
       
    If ProxyServer = "" Then
        Inet1.AccessType = icUseDefault
    Else
        Inet1.AccessType = icNamedProxy
        Inet1.Proxy = ProxyServer & ":" & Trim(CStr(ProxyPort))
    End If
   
    Inet1.URL = FtpUrl
    Inet1.Username = Username
    Inet1.PassWord = PassWord
    If TimeOut = 0 Then
        Inet1.RequestTimeout = 40
    Else
        Inet1.RequestTimeout = TimeOut
    End If
    If LoggingState = True Then
        Print #1, Now & "  Connecting with this information:"
        Print #1, "        URL: " & FtpUrl
        Print #1, "        Username: " & Username
        Print #1, "        Password: " & PassWord
        Print #1, "        Proxy: " & ProxyServer & ":" & ProxyPort
    End If
   
   
   
    Inet1.Execute , "DIR"
    Do While Inet1.StillExecuting
        DoEvents
    Loop
   
   
    Exit Sub
LocalError:
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If
    Inet1.Cancel
    RaiseEvent Error(Err)
End Sub


Public Sub GetFiles(strDir As String)
On Error GoTo LocalError
    Dim i As Integer
    For i = 1 To Files.Count
        Files.Remove (1)
    Next i
   
    LastAction = bwListing
    If LoggingState = True Then
        Print #1, Now & "  Listing files of: " & strDir
    End If
   
    Inet1.Execute , "DIR" & " " & strDir
    Do While Inet1.StillExecuting
        DoEvents
    Loop
    If LoggingState = True Then
        Print #1, Now & "  Response on listing files: " & Inet1.ResponseInfo
    End If
       
    Exit Sub
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If

End Sub


Private Sub Inet1_StateChanged(ByVal State As Integer)
On Error GoTo LocalError
    Dim DirData As String
    Dim tmpData As String
    Dim bDone As Boolean
    Dim strEntry As String
    Dim i As Integer
    Dim k As Integer
    sResponseString = ""
    lResponseCode = 0
    If State = icResponseCompleted Then
        Debug.Print "Response complete.."
        If LastAction = bwListing Then
            Do Until bDone = True
                tmpData = Inet1.GetChunk(1024, icString)
                DoEvents
                If Len(tmpData) = 0 Then
                    bDone = True
                Else
                    DirData = DirData & tmpData
                End If
            Loop
           
           
            For i = 1 To Len(DirData) - 1
                k = InStr(i, DirData, vbCrLf)
                strEntry = Mid(DirData, i, k - i)
                If Right(strEntry, 1) = "/" Then
                      strEntry = Left(strEntry, Len(strEntry) - 1) & "/"
                End If
                If Trim(strEntry) <> "" Then
                      Files.Add strEntry
                End If
                i = k + 1
                DoEvents
            Next i
            If LoggingState = True Then
                Print #1, Now & "  Listing complete."
            End If
       
            LastAction = bwNothing
        ElseIf LastAction = bwGetCurDir Then
            CurDir = Inet1.GetChunk(10000, icString)
            LastAction = bwNothing
        ElseIf LastAction = bwGetResult Then
            sResponseString = Inet1.GetChunk(10000, icString)
            Debug.Print Trim(sResponseString)
            LastAction = bwNothing
        End If
    ElseIf State = icError Then
        Debug.Print "Error..."
        sResponseString = Inet1.ResponseInfo
        lResponseCode = CLng(Inet1.ResponseCode)
        If LoggingState = True Then
            Print #1, Now & "  Error: " & CStr(Inet1.ResponseCode) & "-" & Inet1.ResponseInfo
        End If
       
    ElseIf State = icResolvingHost Then
        Debug.Print "Resolving host.."
        If LoggingState = True Then
            Print #1, Now & "  Resolving host.."
        End If
    ElseIf State = icHostResolved Then
        Debug.Print "Host resolved..."
        If LoggingState = True Then
            Print #1, Now & "  Host resolved"
        End If
    ElseIf State = icConnecting Then
        Debug.Print "Connecting..."
        If LoggingState = True Then
            Print #1, Now & "  Connectiong..."
        End If
    ElseIf State = icConnected Then
        Debug.Print "Connected..."
        If LoggingState = True Then
            Print #1, Now & "  Connected"
        End If
    ElseIf State = icRequesting Then
        Debug.Print "Requesting..."
        If LoggingState = True Then
            Print #1, Now & "  Sending request..."
        End If
    ElseIf State = icRequestSent Then
        Debug.Print "Request send..."
        If LoggingState = True Then
            Print #1, Now & "  Request send"
        End If
    ElseIf State = icReceivingResponse Then
        Debug.Print "Receiving response..."
        If LoggingState = True Then
            Print #1, Now & "  Receiving data..."
        End If
   
    ElseIf State = icResponseReceived Then
        Debug.Print "response received"
        If LoggingState = True Then
            Print #1, Now & "  Response received"
        End If
    ElseIf State = icDisconnecting Then
        If LoggingState = True Then
            Print #1, Now & "  Disconnecting.."
        End If
    ElseIf State = icDisconnected Then
        If LoggingState = True Then
            Print #1, Now & "  Disconnected"
        End If
    End If
   
    Exit Sub
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If
   
End Sub

Private Sub UserControl_Resize()
    UserControl.Width = Label1.Width
    UserControl.Height = Label1.Height
End Sub

Private Sub UserControl_Terminate()
    On Error Resume Next
    Inet1.Execute , "CLOSE"
    Inet1.Cancel
    Call StopLogging
End Sub

Public Sub CloseSession()
    On Error Resume Next
    Inet1.Execute , "CLOSE"
    Inet1.Cancel
End Sub

Public Sub DownLoadFile(SourceFile As String, DestFile As String)
On Error GoTo LocalError

    LastAction = bwDownloading
    If LoggingState = True Then
        Print #1, Now & "  Downloading file: " & SourceFile & " to " & DestFile
    End If
   
    Inet1.Execute , "GET " & SourceFile & " " & DestFile
    Do While Inet1.StillExecuting = True
        DoEvents
    Loop
    If LoggingState = True Then
        Print #1, Now & "  Response on download: " & Inet1.ResponseInfo
    End If
   
    Exit Sub
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If
End Sub

Public Sub UploadFile(LocalFile As String, RemoteFile As String)
On Error GoTo LocalError
    LastAction = bwUploading
    If LoggingState = True Then
        Print #1, Now & "  Uploading file from: " & LocalFile & " to " & RemoteFile
    End If
   
    Inet1.Execute , "PUT " & LocalFile & " " & RemoteFile
    Do While Inet1.StillExecuting = True
        DoEvents
    Loop
    If LoggingState = True Then
        Print #1, Now & "  Response on upload: " & Inet1.ResponseInfo
    End If
    Exit Sub
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If
End Sub

Public Sub MkDir(DirSpec As String)
On Error GoTo LocalError
    If LoggingState = True Then
        Print #1, Now & "  Creating directory: " & DirSpec
    End If
    Inet1.Execute , "MKDIR " & DirSpec
    Do While Inet1.StillExecuting = True
        DoEvents
    Loop
    If LoggingState = True Then
        Print #1, Now & "  Response on creating dir: " & Inet1.ResponseInfo
    End If
   
    Exit Sub
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If
End Sub

Public Sub ChDir(DirSpec As String)
On Error GoTo LocalError
    LastAction = bwGetResult
    If LoggingState = True Then
        Print #1, Now & "  Change directory to: " & DirSpec
    End If
    Inet1.Execute , "CD " & DirSpec
    Do While Inet1.StillExecuting = True
        DoEvents
    Loop
    If LoggingState = True Then
        Print #1, Now & "  Response on changedir: " & Inet1.ResponseInfo
    End If
   
    Exit Sub
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If

End Sub

Public Sub DeleteFile(FileSpec As String)
On Error GoTo LocalError
    If LoggingState = True Then
        Print #1, Now & "  Deleting file: " & FileSpec
    End If
    Inet1.Execute , "DELETE " & FileSpec
    Do While Inet1.StillExecuting = True
        DoEvents
    Loop
    If LoggingState = True Then
        Print #1, Now & "  Respsone on delete file: " & Inet1.ResponseInfo
    End If
   
    Exit Sub
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If
End Sub

Public Sub DeletDir(FileSpec As String)
On Error GoTo LocalError
    If LoggingState = True Then
        Print #1, Now & "  Delete directory: " & FileSpec
    End If
    Inet1.Execute , "RMDIR " & FileSpec
    Do While Inet1.StillExecuting = True
        DoEvents
    Loop
    If LoggingState = True Then
        Print #1, Now & "  Response on delete directory: " & Inet1.ResponseInfo
    End If
   
    Exit Sub
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If

End Sub

Public Function GetCurDir() As String
On Error GoTo LocalError
    LastAction = bwGetCurDir
   
    If LoggingState = True Then
        Print #1, Now & "  Getting current remote dir.."
    End If
    Inet1.Execute , "PWD"
    Do While Inet1.StillExecuting = True
        DoEvents
    Loop
    If LoggingState = True Then
        Print #1, Now & "  Response on getcurdir: " & Inet1.ResponseInfo
    End If
   
    GetCurDir = Trim(CurDir)
    Exit Function
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If
End Function

Public Sub Rename(SourceFile As String, DestFile As String)
On Error GoTo LocalError
    If LoggingState = True Then
        Print #1, Now & "  Rename file: " & SourceFile & " to " & DestFile
    End If
    Inet1.Execute , "RENAME " & SourceFile & " " & DestFile
    Do While Inet1.StillExecuting = True
        DoEvents
    Loop
    If LoggingState = True Then
        Print #1, Now & "  Response on rename file: " & Inet1.ResponseInfo
    End If
    Exit Sub
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If
End Sub

Private Function IsNetConnected() As Boolean
    IsNetConnected = InternetGetConnectedState(0, 0)
End Function

Public Property Get ResponseInfo() As String
    ResponseInfo = Inet1.ResponseInfo
End Property

Public Property Get ResponseCode() As Long
    ResponseCode = Inet1.ResponseCode
End Property

Public Sub StartLogging()
    On Error GoTo LocalError
    If LoggingState = False Then
        Open LogFile For Output As #1
        Print #1, Now & "  Logging started"
        LoggingState = True
    End If
Exit Sub
LocalError:
    RaiseEvent Error(Err)
    If LoggingState = True Then
        Print #1, Now & "  Error: " & CStr(Err) & "-" & Error(Err)
    End If
End Sub

Public Sub StopLogging()
    If LoggingState = True Then
        Print #1, Now & "  End logging"
        Close #1
        LoggingState = False
    End If
End Sub

Public Sub AddLogEntry(strLogEntry As String)
    If LoggingState = True Then
        Print #1, Now & "  " & strLogEntry
    End If
End Sub

Public Function StillExecuting() As Boolean
    StillExecuting = Inet1.StillExecuting
End Function

Public Sub SetTo(s As String)
    LastAction = bwGetResult
    Inet1.Execute , "TYPE " & UCase(s)
    Do While Inet1.StillExecuting = True
        DoEvents
    Loop
   
End Sub
' kode slut
'***********************
Avatar billede vbcoder Nybegynder
15. august 2003 - 11:43 #14
fil 3 af 3

Teksten her pastes til en tom tekstfil med navnet ftp.vbp

Type=Exe
Form=Form1.frm
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\System32\stdole2.tlb#OLE Automation
Object={48E59290-9880-11CF-9754-00AA00C00908}#1.0#0; MSINET.OCX
UserControl=ctlFTP.ctl
IconForm="Form1"
Startup="Form1"
Command32=""
Name="Project1"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="F.Hundewadt"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1

[MS Transaction Server]
AutoRefresh=1
Avatar billede vbcoder Nybegynder
15. august 2003 - 11:47 #15
for nemheds skyld ;)

http://visualcoder.dk/code/ftp_demo.zip

//vbcoder
Avatar billede martin_moth Mester
15. august 2003 - 12:12 #16
Øhh - kan det ikke gøres simplere:

Private Sub Inet_Put_DB(LokalFilMedSti As String, ServerFilnavn As String)
  Inet.Protocol = icFTP
  Inet.RemoteHost = "xxx.xxx.xx.xxx"
  Inet.RemotePort = "21"
  Inet.UserName = "User"
  Inet.Password = "Password"
  Inet.Execute , "put " & LokalFilMedSti & " servermappe\" & ServerFilnavn
End Sub

Eller har jeg misforstået?
Avatar billede vbcoder Nybegynder
15. august 2003 - 16:08 #17
man kan jo gøre det som man vil.

det smarte ved den konstruktion er genbrug

//vbcoder
Avatar billede robotten Praktikant
25. september 2003 - 16:00 #18
robbin>> Kigger du lige her?:
http://www.eksperten.dk/spm/335989
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
Kategori
Kurser inden for grundlæggende programmering

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