webForumDet fria alternativet
Logga in / Bli medlem

Anropa Sub i VB6

.NET

3 svar · 312 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"))
251 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)