Avatar billede shjdsi Nybegynder
17. december 2003 - 13:04 Der er 10 kommentarer og
1 løsning

2 dimentionelt array

den ene dimention skal holde en string, den anden en integer

således
mitarray()
redim preserve mitarray(ettal,ettal)
det skal initaliseres udfra et udtræk fra en db, således at string kommer til at holde navnet på det jeg vil chekke og status kommer til at holde et tal der angiver om den givne strings status.

på baggrund af dette array skal de dynamiske kontroller dannes

så hvis status f.eks er 3 og string er "minprocess" laver den fillcolor rød.

Mit problem er rent teknisk hvordan initalisere jeg et sådan array og hvordan læser jeg det.

der er lige mange elementer i dimensionx,y så det burde ikke være et problem
Avatar billede martin_moth Mester
17. december 2003 - 13:10 #1
2 sek...
Avatar billede martin_moth Mester
17. december 2003 - 13:15 #2
Dim Arr(1,1) as string

Arr(0,0) = "Hej"
Arr(0,1) = "Med"
Arr(1,0) = "Dig"
Arr(1,1) = "Simon"
Avatar billede martin_moth Mester
17. december 2003 - 13:15 #3
Svar (kopieret fra andet spørgsmål - søgefunktionen er vores ven :o)
Avatar billede martin_moth Mester
17. december 2003 - 13:19 #4
Alternativt erklær din egen type

Type MyType
  MyString as String
  MyNumber as Integer
End Type

Og lav et array

  Dim MyArray(1) as MyType
  MyArray(0).MyString = "Hej"
  MyArray(0).MyNumber = 111
  MyArray(1).MyString = "Hej igen"
  MyArray(1).MyNumber = 123

Hvis ingen af svarene er tilfredsstillende, kan du garanteret kombinere dig frem til lige det du vil have :o)
Avatar billede shjdsi Nybegynder
17. december 2003 - 13:45 #5
Det ser fint ud, men mit problem nu er at jeg lige meget hvordan jeg definere min type kommer der en fejl. Den skal fungere i en public function i en class. Det er ligesom om at jeg ikke får lov at anvende en type i et class modul. Men det er der det bliver initaliseret.

Hvis jeg så definere typen i et alm .modul ser det ud til at virke men så fejler den når array skal retuneres fra funktionen.

Fejl meddeelse:
"Only user-defined types defined in public object modules can be coerced to or from a variant or passwd to late-bound functions"

Min funktion i klassen

  Public Function CheckQueue(QueueName() As String)
   

    Dim Conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim StoppedQueues() As MyQueue
    Dim x
   
    Set Conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    strConn = "Driver={SQL Server}; Server=" & databaseServer & "; Option=16834; Database=mosaic;"
   
    Conn.Open strConn, dbUserName, dbPassword
    Dim testQueue As Byte
    ReDim StoppedQueues(UBound(QueueName))
    For i = 0 To UBound(QueueName)
    sqlstr = "select name,id,state from Queue" _
    & " where name = '" & QueueName(i) & "'"
   
          Debug.Print sqlstr
    rs.Open sqlstr, Conn
    Do While Not rs.EOF
       
          testQueue = rs!State
          If testQueue = 4 Then
            'StoppedQueues(x) = rs!Name
            StoppedQueues(x).MyState = 4
           
          End If
            StoppedQueues(x).MyQueue = rs!Name
            x = x + 1
           
            rs.MoveNext
            DoEvents
       
        Loop
        rs.Close
    Next i
    ReDim Preserve StoppedQueues(x, x)
    CheckQueue = StoppedQueues()

    End Function

Min type defineret i et alm. modul "general declaration"

Public Type MyQueue
        MyQueue As String
        MyState As Integer
End Type



hmmmmmm surt
Avatar billede shjdsi Nybegynder
17. december 2003 - 13:46 #6
den fejler ved CheckQueue = StoppedQueues()
Avatar billede martin_moth Mester
17. december 2003 - 13:50 #7
Selvdefinerede typer SKAL erklæres i et modul... Hvis det da er den løsning du vil bruge.
Forstår ikke fejlen :o(
Avatar billede sion Nybegynder
17. december 2003 - 16:29 #8
Martin_Moth, brugerdefinerede typer kan sagens bruges lokalt i en form, et modul, en klasse osv.. Du skal bare definere typen privat. Følgende eksempel virker i en alm. form:

Private Type Noget
  Hej As String
  Davs As String
End Type

Private Sub Form_Load()
  Dim Test As Noget
  Test.Davs = "Mjello"
  MsgBox Test.Davs
End Sub
Avatar billede sion Nybegynder
17. december 2003 - 16:33 #9
shjdsi, jeg tror fejlen i din kode er at du ikke har sat funktionen til at returnere en værdi af typen MyQueue. Så prøv at ændre din funktion-header fra

Public Function CheckQueue(QueueName() As String)

til

Public Function CheckQueue(QueueName() As String) as MyQueue
Avatar billede shjdsi Nybegynder
17. december 2003 - 16:40 #10
Det har jeg gjort og jeg kom også et lille stykke længere, jeg hsr får ikke ast rode for meget i mit klasse modul oprettet funktioen i et slm modul og kaldt den

Function testCheckQueue(QueueName() As String) As MyQueue

hele funktionen er posted lidt længere oppe samt hvordsan jeg kslder den og forsøger at læse indholdet sf det den returnere.. :-)
Avatar billede shjdsi Nybegynder
17. december 2003 - 16:42 #11
Sorry det var det andet spg. jeg har kørende havde faktisk lukket dette :-)
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