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
aihe?
Vahvasti epäilen tuon "simppeli:n" perusteella, että on jokin koulutehtävä...
SteelCore kirjoitti:
Itellä ei oo enää muistissa miten näitä Visual Basic ohjelmia tehdään - -
Liekö koskaan ollutkaan? *huokaus*
lainaus:
On Error GoTo Ohjelmointiputka
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)
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.
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 Subilmeisesti ainakin randomize kohdassa on jotain häikkää..
(Mod. Edit. Opettele toki käyttämään myös kooditageja.)
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 FunctionAihe on jo aika vanha, joten et voi enää vastata siihen.