Avatar billede dip Nybegynder
16. oktober 2000 - 10:43 Der er 6 kommentarer og
2 løsninger

Retuner værdi til anden funktion

Hej

Jeg har et problem med et par funktioner, der skal dels hente og
gemme værdier i en Access database.

Jeg har følgende to funktioner i samme class, hvor den sidste skal retuner
en værdi til første funktion, men der bliver ikke hentet andet end værdien
0.

Er der nogen der kan give et hint.

PS. Jeg er altså uerfaren i VB, så undskyld det evt. elemtære  spørgsmål.

Public Function Insert_Tidsreg(Konto As String, Maaned As Integer, Aar As
Integer, Timer As Integer) As Boolean

    Dim Sted As Integer
    Dim Art As Integer
    Dim rsIndex As Long


    Sted = Val(Mid(Konto, 1, 2))
    Art = Val(Mid(Konto, 3, 2))

    rsIndex = Select_Index(Sted, Art)

    strSQLInsert = \"INSERT INTO Tidsreg (TilladID, Maaned, Aar, Timer)
VALUES (\" & rsIndex & \",\" & Maaned & \",\" & Aar & \",\" & Timer & \")\"

    cnTidsreg.Open
    cnTidsreg.CursorLocation = adUseClient

    cnTidsreg.Execute strSQLInsert

    Insert_Tidsreg = True

    cnTidsreg.Close

End Function

Public Function Select_Index(Sted As Integer, Art As Integer) As Integer

    cnTidsreg.Open
    cnTidsreg.CursorLocation = adUseServer

    strSQLIndex = \"SELECT Tilladt.TilladID FROM Tilladt WHERE Tilladt.Sted=\"
& Sted & \" AND Tilladt.Art=\" & Art

    cnTidsreg.Execute (strSQLIndex)

    cnTidsreg.Close

End Function



Med venlig hilsen
David Ipsen

Hej igen igen.

Jeg har stadig et problem med et par funktioner, der skal dels hente og
gemme værdier i en Access database.

Jeg har følgende to funktioner i samme class, hvor den sidste skal retuner
en værdi til første funktion, men der bliver ikke hentet andet end værdien
0.

Er der nogen der kan give et hint.

PS. Jeg er altså uerfaren i VB, så undskyld det evt. elemtære  spørgsmål.

Public Function Insert_Tidsreg(Konto As String, Maaned As Integer, Aar As
Integer, Timer As Integer) As Boolean

    Dim Sted As Integer
    Dim Art As Integer
    Dim rsIndex As Long


    Sted = Val(Mid(Konto, 1, 2))
    Art = Val(Mid(Konto, 3, 2))

    rsIndex = Select_Index(Sted, Art)

    strSQLInsert = \"INSERT INTO Tidsreg (TilladID, Maaned, Aar, Timer)
VALUES (\" & rsIndex & \",\" & Maaned & \",\" & Aar & \",\" & Timer & \")\"

    cnTidsreg.Open
    cnTidsreg.CursorLocation = adUseClient

    cnTidsreg.Execute strSQLInsert

    Insert_Tidsreg = True

    cnTidsreg.Close

End Function

Public Function Select_Index(Sted As Integer, Art As Integer) As Integer

    cnTidsreg.Open
    cnTidsreg.CursorLocation = adUseServer

    strSQLIndex = \"SELECT Tilladt.TilladID FROM Tilladt WHERE Tilladt.Sted=\"
& Sted & \" AND Tilladt.Art=\" & Art

    cnTidsreg.Execute (strSQLIndex)

    cnTidsreg.Close

End Function



Med venlig hilsen
David Ipsen

Hej igen igen.

Jeg har stadig et problem med et par funktioner, der skal dels hente og
gemme værdier i en Access database.

Jeg har følgende to funktioner i samme class, hvor den sidste skal retuner
en værdi til første funktion, men der bliver ikke hentet andet end værdien
0.

Er der nogen der kan give et hint.

PS. Jeg er altså uerfaren i VB, så undskyld det evt. elemtære  spørgsmål.

Public Function Insert_Tidsreg(Konto As String, Maaned As Integer, Aar As
Integer, Timer As Integer) As Boolean

    Dim Sted As Integer
    Dim Art As Integer
    Dim rsIndex As Long


    Sted = Val(Mid(Konto, 1, 2))
    Art = Val(Mid(Konto, 3, 2))

    rsIndex = Select_Index(Sted, Art)

    strSQLInsert = \"INSERT INTO Tidsreg (TilladID, Maaned, Aar, Timer)
VALUES (\" & rsIndex & \",\" & Maaned & \",\" & Aar & \",\" & Timer & \")\"

    cnTidsreg.Open
    cnTidsreg.CursorLocation = adUseClient

    cnTidsreg.Execute strSQLInsert

    Insert_Tidsreg = True

    cnTidsreg.Close

End Function

Public Function Select_Index(Sted As Integer, Art As Integer) As Integer

    cnTidsreg.Open
    cnTidsreg.CursorLocation = adUseServer

    strSQLIndex = \"SELECT Tilladt.TilladID FROM Tilladt WHERE Tilladt.Sted=\"
& Sted & \" AND Tilladt.Art=\" & Art

    cnTidsreg.Execute (strSQLIndex)

    cnTidsreg.Close

End Function



Med venlig hilsen
David Ipsen

Avatar billede tigerdyr Nybegynder
16. oktober 2000 - 11:03 #1
Mangler der ikke en Return statement i funktionen ??
Avatar billede tigerdyr Nybegynder
16. oktober 2000 - 11:07 #2
Det er vist lang tid siden jeg har arbejdet med VB for alvor...(der er vist ingen Return i VB)

Du glemmer:
Select_Index = \"DenVærdiDerSkalReturneres\"
End Function
Avatar billede tigerdyr Nybegynder
16. oktober 2000 - 11:08 #3
Eks.
Function BinarySearch(. . .) As Boolean
. . .
  \' Value not found. Return a value of False.
  If lower > upper Then
      BinarySearch = False
      Exit Function
  End If
. . .
End Function

Avatar billede dip Nybegynder
16. oktober 2000 - 12:27 #4
Jo der mangler noget.

Jeg har forsøgt :

      Select_Index=cnTidsreg.Execute (strSQLIndex)

Men så fåer jeg en \" Object required\" på select_Index

Og hvorfor så det ?

Mvh
David Ipsen
Avatar billede cstern Nybegynder
16. oktober 2000 - 15:34 #5
mon ikke cnTidsreg.Execute returner et object snarere end en integer som du har defineret? jeg ved det ikke men det kunne vel være en forklaring. Under alle omstændigheder skal Select_Index tildeles en værdi, ellers er den undefined (=0).
Avatar billede dip Nybegynder
16. oktober 2000 - 22:17 #6
Jeg har også prøvet at sætte \"Select_index() as adodb.recordset\" plus et par andre tilpasninger i den kaldene funktion.

Lige meget hjalp dette.

Er det evt. en helt anden vej jeg skal gå ?

Mvh
david Ipsen
Avatar billede dip Nybegynder
17. oktober 2000 - 00:09 #7
Hej med jer.

Her er så løsningen på problemet, som kom på news.

(Sorry cross-posting)

Public Function Select_Index(Sted As Long, Art As Long) As Long
   
    Dim iRS As ADODB.Recordset
    Dim lRetur As Long
   
    cnTidsreg.Open
    cnTidsreg.CursorLocation = adUseServer
   
    strSQLIndex = \"SELECT Tilladt.TilladID FROM Tilladt WHERE Tilladt.Sted=\" & Sted & \" AND Tilladt.Art=\" & Art
   
    Set iRS = cnTidsreg.Execute(strSQLIndex)
   
    If Not iRS.EOF Then
        lRetur = iRS.Fields(0).Value
    Else
        lRetur = -1
    End If
   
    Set iRS = Nothing
   
    cnTidsreg.Close
   
    Select_Index = lRetur
   
    Exit Function
End Function

Men I fåer jeres point aligevel, da de også har været til hjælp.

Mvh
David ipsen
Avatar billede tigerdyr Nybegynder
17. oktober 2000 - 11:51 #8
takker :o)
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