webForumDet fria alternativet

Anropa Sub i VB6

3 svar · 312 visningar · startad av Pedda

PeddaMedlem sedan juni 20006 032 inlägg
#1

Har aldrig suttit med VB6 innan så här kommer en nybörjarfråga

Om jag har en Sub

Private Sub dbLarmIn(Datum As String, splititem() As String, _
    rs_larmtaggar As Recordset)
    
    Set db_larmIn = OpenDatabase(App.Path & "\larm.mdb")
    Set rs_larmIn = db_larmIn.OpenRecordset("larm", dbOpenDynaset)
    rs_larmIn.AddNew
    rs_larmIn("StartTid") = Datum
    rs_larmIn("Givare") = splititem(2)
    rs_larmIn("Larmtext") = rs_larmtaggar("larm")
    rs_larmIn.Update
        
    rs_larmIn.Close
    db_larmIn.Close
End Sub

så trodde jag att man bara skulle kunna köra den med

dbLarmIn(Datum, splititem(2), rs_larmtaggar("larm"))

men det gick ju inte, så hur ska man göra?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Du kan inte kalla på en sub med parenteser, det borde du fått veta (av felmeddelande ex.). Antingen gör du det med nyckelordet call, eller utan parenteser runt parameterlistan.

PeddaMedlem sedan juni 20006 032 inlägg
#3

Felmeddelandet sa inte så mycket: Compile Error: Syntax Error

Men det går ju inte att bara kalla på suben utan parenteser för då får jag Argument not optional.

@ndersMedlem sedan juni 200032 969 inlägg
#4
  1. Har du ADODB som referens i ditt projekt?
  2. Du har angett att den tredje parametern som skall skickas in till subrutinen skall vara ett recordset. Du skickar in ett fältvärde.
    Jag skulle bytt den sista parametern till en sträng, strLarm, och sedan i koden:
rs_larmIn("Larmtext") = strLarm

Du skickar också in en sträng som parameter 2, men hanterar som en array, ta bort parenteserna i interfacet och när du använder variabeln.

Så här skulle nog jag provat:

Private Sub dbLarmIn(Datum As String, splititem As String, _
    strLarmText as String)
    
    Set db_larmIn = OpenDatabase(App.Path & "\larm.mdb")
    Set rs_larmIn = db_larmIn.OpenRecordset("larm", dbOpenDynaset)
    rs_larmIn.AddNew
    rs_larmIn("StartTid") = Datum
    rs_larmIn("Givare") = splititem
    rs_larmIn("Larmtext") = strLarm
    rs_larmIn.Update
        
    rs_larmIn.Close
    db_larmIn.Close
End Sub

Och för att kalla på subrutinen:

Antingen:

dbLarmIn Datum, splititem(2), rs_larmtaggar("larm")

eller:

Call dbLarmIn Datum, splititem(2), rs_larmtaggar("larm"))
119 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
117 ms — hämta tråd, inlägg och bilagor (db)