04. august 2008 - 16:48Der er
14 kommentarer og 1 løsning
hente data fra array
jeg har nu lavet mit array i Form_Load.
er erklæret således:
Dim forret(0 To 1, 0 To 9) As String 'forreter forret(0, 0) = "Stor tartelet med høns i asparges" forret(0, 1) = "Stor tartelet med rejer i asparges og fiskeboller" forret(0, 2) = "Varmrøget laks med røræg & grønne asparges" forret(0, 3) = "Lakseroulade på krølsalat" forret(0, 4) = "Røget ørred med flødestuvet spinat" forret(0, 5) = "Tun musé med citron og flutes" forret(0, 6) = "Hønsesalat på ananasring med flutes" forret(0, 7) = "Laksepate med røget laks, dressing og flutes" forret(0, 8) = "Fiskefad med dampet laks, rejer, asparges, flutes og dressing" forret(0, 9) = "Røget okseinderlår med vindrue pickles" 'pris forret(1, 0) = 30 forret(1, 1) = 0 forret(1, 2) = 37 forret(1, 3) = 38 forret(1, 4) = 30 forret(1, 5) = 25 forret(1, 6) = 30 forret(1, 7) = 40 forret(1, 8) = 35 forret(1, 9) = 30
'forreter indsættes i combobox Dim i As Integer For i = 0 To 9 Step 1 Combo2.AddItem forret(0, i) Next i
her vil jeg så når man klikker på en tager man index nummeret til linien man klikker på og denne henter så en værdi i array'et.
men når man trykker så markere den "forret" og skriver "compile error" "expected array"
Public Sub Combo2_Click()
Dim valgt_forret As Integer valgt_forret = Combo2.ListIndex Text4.Text = Text4.Text + forret(0, valgt_forret) + vbNewLine
Text6.Text = pris + "kr." End Sub
kan man ikke erklærer et array i en sub og hente data fra det i et andet.
har prøvet og erklære variablen forret i "generel" men der må jeg ikke.
har prøvet at lave arrayet i sin egen private funktion og så hente den ind de steder der skal hentes data fra array, men så melder den også fejl...
hvordan laver man et array man kan hente data fra i hele programmet?
bonus spørgsmål: i den løkke der ligger forreterne i comboboxen har jeg sagt den skal køre fra 0-9. men der kan komme flere på så ville hellere bruge kommandien upbound, men så tæller den kun til 2, som der´er i den første del af arrayet, hvordan fortæller man den skal tælle anden række og ikke første?
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
'her vil jeg så når man klikker på en t End Sub Public Sub Combo2_Click() Text4.Text = Text4.Text + Combo2.Text + vbNewLine ' Varen pris = Combo2.Column(1) ' Prisen
Combo2.ColumnCount = 2 ' fortæller at jeg vil have 2 kolonner Combo2.BoundColumn = 0 ' den er bundet på kolonne 0 Foretter Combo2.ColumnWidths = "5;0" ' jeg vil se forretter, men ikke priser Combo2.Column() = forret ' smider det hele ind på en gang
har fundet en stump kode til at hente en txt fil ind i vb.
er således:
Open "forret.txt" For Input As #1 ReDim txt$(0) Do While Not EOF(1) ReDim Preserve txt$(UBound(txt$) + 1) Input #1, txt$(UBound(txt$)) Loop Close #1
jeg går ud fra man skal bruge "split" funktionen for at dele den læse line ind for det der står før ; og efter... men hvordan gør man dette? så den gemmer data i hver sin række
Global Forret() As Variant Public Sub HentData() Dim X As Integer, D As Variant, Linje As String, DataFil As String DataFil = "C:\data\forret.txt" Open DataFil For Input As #1 Do Line Input #1, Linje X = X + 1 ' tæller data Loop Until EOF(1) Close 1
ReDim Forret(1, X) 'redim til det antal data der er X = 0 Open DataFil For Input As #1 Do Line Input #1, Linje D = Split(Linje, ";") ' deler linjen efter ; Forret(0, X) = D(0) ' tildeler ret Forret(1, X) = D(1) ' tildeler pris X = X + 1 Loop Until EOF(1) Close 1 End Sub
Global Forret() As Variant Public Sub HentData() Dim X As Integer, D As Variant, Linje As String, DataFil As String ' DataFil = App.path & "\forret.txt"' hvis den er i samme bibliotek som programmets exe fil DataFil = "C:\data\forret.txt" X = 0 Open DataFil For Input As #1 Do Line Input #1, Linje X = X + 1 ' tæller data Loop Until EOF(1) Close 1
ReDim Forret(1, X) 'redim til det antal data der er X = 0 Open DataFil For Input As #1 Do Line Input #1, Linje D = Split(Linje, ";") ' deler linjen efter ; Forret(0, X) = D(0) ' tildeler ret Forret(1, X) = D(1) ' tildeler pris X = X + 1 Loop Until EOF(1) Close 1 End Sub
når jeg tilføjer: Global Forret_liste() As Variant
får jeg denne besked: Compile error: constants, fixed length strings, arrays, user-defined type and declare statements not allowed in public members and projects.
men har kopieret den ind så den står som du har skrevet den, har også prøvet at rykke den helt i top så den står over alt kode...
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.