Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Tarvisin jonku tekemään VB-ohjelman

Sivun loppuun

SteelCore [27.03.2007 09:18:44]

#

Itellä ei oo enää muistissa miten näitä Visual Basic ohjelmia tehdään ja tarvisinki nyt jonku apua, sillä pitäis saada yksi ihan simppeli ohjelma toimimaan. Jos kiinnostuit ota yhteyttä petroff69@hotmail.com. ps. nimellinen korvaus mahdollinen

Tumppu [28.03.2007 15:58:30]

#

aihe?

tesmu [28.03.2007 16:04:24]

#

Vahvasti epäilen tuon "simppeli:n" perusteella, että on jokin koulutehtävä...

Krisu [28.03.2007 21:06:24]

#

SteelCore kirjoitti:

Itellä ei oo enää muistissa miten näitä Visual Basic ohjelmia tehdään - -

Liekö koskaan ollutkaan? *huokaus*

neau33 [29.03.2007 00:45:24]

#

lainaus:

On Error GoTo Ohjelmointiputka

Grez [29.03.2007 00:50:41]

#

Laita se softa joka ei toimi tänne niin katsotaan miten sen saa toimimaan. Jos laitat tänne niin että siitä ja ongelman ratkaisusta on kaikille iloa niin joku (minäkin) saattaa katsoa ilmaiseksi. Jos pitäisi sähköpostilla konsultoida niin voin siltikin olla kiinnostunut, mutta silloin se maksaa sen normaalin taksan (120 euroa / tunti)

Grez [29.03.2007 08:46:47]

#

Niin, nyt hieman pirteämpänä huomaan (pitäisi lukea se otsikkokin), että ilmeisesti mitään ohjelmaa ei vielä olekaan, vaikka "pitäis saada yksi ihan simppeli ohjelma toimimaan" antaisikin olettaa toista.

SteelCore [29.03.2007 15:43:00]

#

Hyviä arvauksia.

Ohjelman tarkoitus olisi:

Kun ohjelma käynnistyy, arvotaan kunkin henkilön pankkitilille rahaa -5000...+20000mk (rahat arvotaan taulukkoon, (form1 - load).

Henkilön nro tehdään ComboBox-painikkeella, koodissa tutkitaan Text-ominaisuutta (numerot 1 - 5 List ominaisuus)

-Näytä saldo -painikkeella haetaan ko henkilön tiedot taulukosta ja saldo näytetään.
-Pano -painikkeella lisätään tekstilaatikossa oleva summa ko henkilön tilille.
-Otto -painikkeella tekstilaatikkoon kirjoitettu summa vähennetään henkilön tililtä. Miinuksella olevalta tililtä ei saa nostaa, eikä tililtä voi nostaa enempää rahaa kuin siellä on. Näistä tilanteista pitää tulla virheilmoitus.

Private Sub Combo1_Change()

End Sub

Private Sub Command1_Click()

Label1.Caption = "Tilisi saldo on " & saldo(Combo1)

End Sub

Private Sub Command2_Click()

If Text1.Text = "" Then
    Label1.Caption = "Syötä summa!"
Else
    pano Combo1, Text1.Text
    Label1.Caption = ""
    Text1.Text = ""
End If

End Sub

Private Sub Command3_Click()

If Text1.Text = "" Then
    Label1.Caption = "Syötä summa !"
Else
    otto Combo1, Text1
    Label1.Caption = ""
    Text1.Text = ""
End If

End Sub

Private Sub Form_Load()

Randomize

    For i = 1 To 5
        henkilot(i) = Int((20000 - (-5000) + 1) * Rnd + (-5000))
    Next i

End Sub

Private Sub Text1_Change()

End Sub

ilmeisesti ainakin randomize kohdassa on jotain häikkää..

(Mod. Edit. Opettele toki käyttämään myös kooditageja.)

Grez [29.03.2007 20:53:24]

#

Randomizelle pitäisi antaa parametri, vaikkapa timer. Tosin ainakin VB6:ssa jos parametrin jättää pois niin se käyttää juuri Timeria, joten sinänsä tuo osuus näyttäisi koodissasi olevan ihan OK.

Yleisesti mielestäni kannattaa aina laitta Option Explicit päälle, niin ei tule tyhmiä kämmejä muuttujanimien typottamisesta. Lisäksi välttäisin lähes identtisen koodin kirjoittamista kahteen kertaan, joten mielestäni pano ja otto kannattaa tehdä yhdellä koodilla.

Tuo ei minusta näytä quickbasicilta, vaan enemmänkin Visual Basicilta, joten tein esimerkin VB6:lla.

(ladattavassa formissa on koodin lisäksi myös kontrollit)
http://grez.info/putka/fPankki.frm :

Option Explicit
Private Const Henkiloita = 5
Private Henkilot(Henkiloita) As Long
Private ValittuHenkilo As Integer
Private Sub cHenkilot_Click()
    Sano "Henkilö vaihdettu"
    ValittuHenkilo = cHenkilot.ItemData(cHenkilot.ListIndex)
End Sub
Private Sub Transaktio(Kerroin As Long)
    Dim UusiSaldo As Long

    If Not TarkistaHenkiloValinta Then Exit Sub

    'Onko syötettu summa numero
    If Not IsNumeric(tSumma.Text) Then
        Sano "Syötä ensin summa"
        Exit Sub
    End If

    'Onko syötetty summa positiivinen?
    If CLng(tSumma.Text) < 0 Then
        Sano "Summan täytyy olla positiivinen luku"
        Exit Sub
    End If

    UusiSaldo = Henkilot(ValittuHenkilo) + Kerroin * CLng(tSumma.Text)

    'Yritetäänkö nostaa pakkasella olevalta tililtä?
    If Kerroin < 0 And UusiSaldo < 0 Then
        Sano "Tiliä ei voi nostaa miinukselle"
        Exit Sub
    End If

    Henkilot(ValittuHenkilo) = UusiSaldo
End Sub
Private Sub cOtto_Click()
    'Negatiivinen transaktio
    Transaktio -1
End Sub

Private Sub cPano_Click()
    'Positiivinen transaktio
    Transaktio 1
End Sub

Private Sub cSaldo_Click()
    If Not TarkistaHenkiloValinta Then Exit Sub
    Sano "Henkilön " & ValittuHenkilo & " saldo on " & Henkilot(ValittuHenkilo)
End Sub

Private Sub Form_Load()
    Dim i As Integer

    Randomize Timer

    For i = 1 To Henkiloita
        'Arvotaan henkilön saldo
        Henkilot(i) = CLng(Rnd() * 25000 - 5000)
        'Lisätään henkilö comboboksiin
        cHenkilot.AddItem "Henkilö " & i
        cHenkilot.ItemData(cHenkilot.NewIndex) = i
    Next i

    'Oletuksena henkilöä ei ole valittu
    ValittuHenkilo = 0
End Sub
Private Sub Sano(Msg As String)
    lViesti.Caption = Msg
End Sub
Private Function TarkistaHenkiloValinta() As Boolean
    TarkistaHenkiloValinta = (ValittuHenkilo >= 1)
    If Not TarkistaHenkiloValinta Then Sano "Valitse ensin henkilo"
End Function

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta