|
| Checkbox i VB 6.0 Fra : Thomas Julø |
Dato : 19-05-01 15:32 |
|
Hejsa
Jeg sidder her og arbejder på et lille projekt, hvor jeg skal bygge en lille
og simpel database.
Oplysningerne der tastes ind i en VB-formular gemmes i en textfil. En af
oplysningerne kommer fra en checkbox. Det der så driller er at hver gang at
jeg skal hente en oplysning ind, hvor der er mærket af i checkboxen dør mit
program med beskeden:
runtime error '380'
Invalid proberty value
Hvad dælen er det der driller.
Når jeg kígger i txt-filen kan jeg heller ikke at den gemmer et nul eller en
eller true/false som jeg mener den burde.
Hilsen
Thomas
| |
Thomas Julø (19-05-2001)
| Kommentar Fra : Thomas Julø |
Dato : 19-05-01 15:43 |
|
Koden jeg har brugt følger her:
Dim Nr As Integer
Dim Medlem As Ops
Private Sub cmdAfslut_Click()
' Afslutter programmet
End
End Sub
Private Sub cmdBeregn_Click()
Dim Skyld As Integer
Dim Resultat As Currency
Resultat = 0
Open "c:\vb filer\medlem.txt" For Random Access Read As #1 Len = Len(Medlem)
For Nr = 1 To LOF(1) / Len(Medlem)
Get #1, Nr, Medlem
If Medlem.Betalt = 0 Then
Skyld = Medlem.Kontingent
Resultat = Resultat + Skyld
Next
Else
Next
End If
End Sub
Private Sub cmdGem_Click()
' Tilføjer et medlem
Nr = Val(txtNr.Text)
Medlem.Navne = txtNavne.Text
Medlem.Gade = txtGade.Text
Medlem.Postnr = txtPostnr.Text
Medlem.By = txtBy.Text
Medlem.Fødeår = txtFødeår.Text
Medlem.Distrikt = txtDistrikt.Text
Medlem.Medlemstype = txttype.Text
Medlem.Kontingent = ComboKontingent.Text
Medlem.Betalt = chkBetalt.Value
Medlem.Løb = txtLøb.Text
Medlem.Længde = txtLængde.Text
Medlem.Højde = txthøjde.Text
Medlem.Spyd = txtSpyd.Text
Open "C:\vb filer\medlem.txt" For Random Access Write As #1 Len =
Len(Medlem)
Put #1, Nr, Medlem
Close
Call Rensfelter
End Sub
Private Sub cmdHent_Click()
If txtNr.Text = "" Then
MsgBox "Du skal indtaste et nr", vbCritical, "Fjols"
txtNr.SetFocus
Else
Nr = Val(txtNr.Text)
Open "c:\vb filer\medlem.txt" For Random Access Read As #1 Len =
Len(Medlem)
Get #1, Nr, Medlem
Close
txtNavne.Text = Medlem.Navne
txtGade.Text = Medlem.Gade
txtPostnr.Text = Medlem.Postnr
txtBy.Text = Medlem.By
txtFødeår.Text = Medlem.Fødeår
txtDistrikt.Text = Medlem.Distrikt
txttype.Text = Medlem.Medlemstype
ComboKontingent.Text = Medlem.Kontingent
chkBetalt.Value = Medlem.Betalt
txtLøb.Text = Medlem.Løb
txtLængde.Text = Medlem.Længde
txthøjde.Text = Medlem.Højde
txtSpyd.Text = Medlem.Spyd
End If
End Sub
Private Sub cmdSlet_Click()
Call Rensfelter
End Sub
Private Sub Rensfelter()
Dim felt As Control
For Each felt In frmMedlem.Controls
If TypeOf felt Is TextBox Then felt.Text = ""
Next
ComboKontingent.Text = "(Ingen)"
chkBetalt = 0
txtNr.SetFocus
End Sub
------
Option Explicit
Public Type Ops
Navne As String * 40
Gade As String * 30
Postnr As String * 4
By As String * 20
Fødeår As String * 4
Distrikt As String * 8
Medlemstype As String * 1
Kontingent As Currency
Betalt As Boolean
Løb As String * 3
Længde As String * 3
Højde As String * 3
Spyd As String * 3
End Type
"Thomas Julø" <tkj@image.dk> skrev i en meddelelse
news:9e60jn$f5s$1@news.inet.tele.dk...
> Hejsa
>
> Jeg sidder her og arbejder på et lille projekt, hvor jeg skal bygge en
lille
> og simpel database.
>
> Oplysningerne der tastes ind i en VB-formular gemmes i en textfil. En af
> oplysningerne kommer fra en checkbox. Det der så driller er at hver gang
at
> jeg skal hente en oplysning ind, hvor der er mærket af i checkboxen dør
mit
> program med beskeden:
> runtime error '380'
> Invalid proberty value
>
> Hvad dælen er det der driller.
>
> Når jeg kígger i txt-filen kan jeg heller ikke at den gemmer et nul eller
en
> eller true/false som jeg mener den burde.
>
> Hilsen
>
> Thomas
>
>
>
>
| |
Tomas Christiansen (19-05-2001)
| Kommentar Fra : Tomas Christiansen |
Dato : 19-05-01 23:18 |
|
Thomas Julø skrev:
> Det der så driller er at hver gang at jeg skal hente en oplysning ind,
> hvor der er mærket af i checkboxen dør mit program med beskeden:
> runtime error '380'
> Invalid proberty value
Når sådan noget sker, er det altid en god idé at single-steppe sig igennem
programmet.
Start programmet som altid med Ctrl-F5 (ikke blot F5), gem evt. filen eller
gør noget andet (efter behov).
Tryk så Ctrk-Break for at stoppe programmet og derefter på F8 for at starte
det igen i "step into" tilstand.
Tryk på cmdHent og tryk F8 for hver linie, som udføres.
Du vil på et tidspunkt komme frem til følgende linie, hvor fejlen "380 -
Invalid property value" optræder:
chkBetalt.Value = Medlem.Betalt
Okay: Værdien i Medlem.Betalt er ikke én som er kompatibel med
chkBetalt.Value.
Lad os nu se...
Value egenskaben på en checkbox er et tal 0, 1 eller 2, og du har defineret
Medled.Betalt som værende en Boolsk værdi:
Betalt As Boolean
Nu ved jeg så tilfældigvis at VB bruger værdien 0 til at gemme værdien
falsk, og værdien -1 til at gemme værdien sand.
Værdien -1 er ikke en af værdiene 0, 1 eller 2, og dette er forklaringen på
hvorfor det går galt!
-------
Tomas
| |
Thomas Julø (20-05-2001)
| Kommentar Fra : Thomas Julø |
Dato : 20-05-01 09:20 |
|
Tak for det.
Variablen er nu erklæret til byte og nu kører det.
Fortsat god weekend
Thomas Julø
"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:biCN6.330$qE1.6991@news.get2net.dk...
> Thomas Julø skrev:
> > Det der så driller er at hver gang at jeg skal hente en oplysning ind,
> > hvor der er mærket af i checkboxen dør mit program med beskeden:
> > runtime error '380'
> > Invalid proberty value
>
> Når sådan noget sker, er det altid en god idé at single-steppe sig igennem
> programmet.
> Start programmet som altid med Ctrl-F5 (ikke blot F5), gem evt. filen
eller
> gør noget andet (efter behov).
> Tryk så Ctrk-Break for at stoppe programmet og derefter på F8 for at
starte
> det igen i "step into" tilstand.
> Tryk på cmdHent og tryk F8 for hver linie, som udføres.
>
> Du vil på et tidspunkt komme frem til følgende linie, hvor fejlen "380 -
> Invalid property value" optræder:
>
> chkBetalt.Value = Medlem.Betalt
>
> Okay: Værdien i Medlem.Betalt er ikke én som er kompatibel med
> chkBetalt.Value.
> Lad os nu se...
> Value egenskaben på en checkbox er et tal 0, 1 eller 2, og du har
defineret
> Medled.Betalt som værende en Boolsk værdi:
>
> Betalt As Boolean
>
> Nu ved jeg så tilfældigvis at VB bruger værdien 0 til at gemme værdien
> falsk, og værdien -1 til at gemme værdien sand.
>
> Værdien -1 er ikke en af værdiene 0, 1 eller 2, og dette er forklaringen
på
> hvorfor det går galt!
>
> -------
> Tomas
>
>
| |
Tomas Christiansen (20-05-2001)
| Kommentar Fra : Tomas Christiansen |
Dato : 20-05-01 21:53 |
|
Thomas Julø skrev:
> Fortsat god weekend
I lige måde.
....og du studsede ikker over:
> > Start programmet som altid med Ctrl-F5 (ikke blot F5)
-------
Tomas
| |
|
|