Anropa Sub i VB6

.NET

3 svar · 320 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Trådstart#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?

Medlem sedan juni 200032 967 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.

Medlem sedan juni 20006 031 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.

Medlem sedan juni 200032 967 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"))
252 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)