Avatar billede jytte Nybegynder
17. marts 2006 - 17:01 Der er 13 kommentarer og
2 løsninger

FRA VB til .Net-application

Hvordan oversætter jeg

    Sub SaveFile(ByVal filepath As String, ByVal str As String)
        Dim objFSO As Object
        Dim objNewFile As Object
        objFSO = CreateObject("Scripting.FileSystemObject")
        objNewFile = objFSO.CreateTextFile(filepath)
        objNewFile.WriteLine(str)
        objNewFile.Close()
    End Sub 'SaveFile

Den skriver at "Option Strict On disallows late binding."

Jeg kan heller ikke få Replace til at virke:

Replace(aktueltfeltindhold, "'", "''")

Den skriver
"Overload resolution failed because no accessible 'Replace' accepts this number of arguments."

Er der nogen der har nogen gode ideer ?
Avatar billede dr_chaos Nybegynder
17. marts 2006 - 17:22 #1
Er det til filupload ?

Hvis der skal du kigge her:
http://support.microsoft.com/default.aspx?scid=kb;en-us;323245

Mht din replace bruger man normalt
EnTextbox.Text.Replace("'", "''")
Avatar billede websam Nybegynder
17. marts 2006 - 18:50 #2
Hvis det skal gemmes i database er det ikke nødvendigt med den replace function det ordner sig selv med Parameter i din sql sætning ;o)

/Websam
Avatar billede websam Nybegynder
17. marts 2006 - 18:51 #3
Det var måske mere relevant med noget validering på file extension ?

/Websam
Avatar billede jytte Nybegynder
17. marts 2006 - 19:57 #4
minstreng.Replace virker fint -- tak for det

Min procedure skal jeg ikke bruge til fileupload. Jeg skal bruge den til at lave en fil indeholdende et databasedump som jeg selv laver ved at bruge indbyggede stored procedures.

>websam
hvad mener du med Parameter i min sqlsætning ? Kan du give et eksempel
Avatar billede websam Nybegynder
17. marts 2006 - 22:06 #5
Ja det kan jeg da, eksemplet er til version 1.1 af platformen :

Dim objDb As DbClass = New DbClass
Dim objComm = New SqlCommand
objComm.Parameters.Add("@Fornavn", SqlDbType.NVarChar)
objComm.Parameters.Add("@Efternavn", SqlDbType.NVarChar)
objComm.Parameters("@Fornavn").Value = Din variabel
objComm.Parameters("@Efternavn").Value = Din variabel
objComm.Connection = objDb.SqlConnect
Try
    objComm.CommandText = "Insert Into tbl_navne (Fornavn, Efternavn) Values (@Fornavn, @Efternavn)"
    objComm.ExecuteNonQuery()
Catch ex As Exception
    Return ex.Message
Finally
    objDb.SqlClose()
End Try

Tag dig ikke af min connection, det har du sikkert styr på, men brugen af parametre kandu lige så godt gøre til vane med det samme i alle dine database behandlings metoder.

/Websam
Avatar billede jytte Nybegynder
17. marts 2006 - 23:29 #6
>websam

Har jeg forstået det rigtigt hvis jeg tror at fidusen ved dine parametre er at man så ikke behøver at lave replace(feltindhold,"'","''") for at undgå sql-injektions og ikke behøver replace(kommatal,",",".") i felter af typen "flydende tal" og måske også undgår diverse krumspring vedrørende dato'er  ?

Altså at parametrene med angivne typer sørger for at maskinen gør "det rigtige" i sql-sætningerne ?
Avatar billede jytte Nybegynder
17. marts 2006 - 23:37 #7
Jeg fik min procedure til at se sådan ud:

    Sub SaveFile(ByVal filepath As String, ByVal str As String)
        Dim oFile As System.IO.File
        Dim oWrite As System.IO.StreamWriter
        oWrite = oFile.CreateText(filepath)
        oWrite.WriteLine(str)
        oWrite.Close()
    End Sub 'SaveFile
Avatar billede jytte Nybegynder
17. marts 2006 - 23:38 #8
Og tak for hjælpen begge to, og læg et svar så jeg kan give point.
Avatar billede websam Nybegynder
17. marts 2006 - 23:55 #9
1. Ja parameterne sørger for at fjerne (')er så du behøver ikke at lave den replace på tekst der skal lagres.

2. Hvad angår kommatal bliver jeg dig svar skyldig :o(

3. Datoer plejer jeg at lave i databasen med getdate()[MsSql] el. now()[Access], men hvis du vil smide en dato med i databasen igennem en parameter, så er det bare sådan her :

objComm.Parameters.Add("@Dato", SqlDbType.DateTime)
objComm.Parameters("@Dato").Value = Now() el. en variabel med dato

Og i din sql (DatoFelt) Values (@Dato)

Så skulle det være på plads ;o)

/Websam
Avatar billede websam Nybegynder
17. marts 2006 - 23:58 #10
Og så kom du mig i forkøbet med metoden, men jeg ville have foreslået :

Imports System.IO

Sub SaveFile(ByVal filepath As String, ByVal str As String)
    Dim oFile As File
    Dim oWrite As StreamWriter
    oWrite = oFile.CreateText(filepath)
    oWrite.WriteLine(str)
    oWrite.Close()
End Sub

Ved at lave imports behøver du ikke at skal skrive System.IO ved alle instantieringer (eller hvordan det lige staves *GGG*)

/Websam
Avatar billede dr_chaos Nybegynder
18. marts 2006 - 08:49 #11
svar :)
Avatar billede jytte Nybegynder
18. marts 2006 - 09:02 #12
>dr_chaos

dit svar skulle vist have været et svar :-)
Avatar billede dr_chaos Nybegynder
18. marts 2006 - 09:13 #13
hehe det er tidligt lørdag og 3 timer siden min datter synes at nu skulle vi op, så er ikke helt vågen :)
Avatar billede websam Nybegynder
18. marts 2006 - 09:22 #14
3 timer ??? så må du da være vågen *GGG*
Avatar billede dr_chaos Nybegynder
18. marts 2006 - 10:15 #15
jeps :)
enormt :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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