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 Sub
ilmeisesti 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 Function
Aihe on jo aika vanha, joten et voi enää vastata siihen.