Terve.
Olen pian tapellut yhden desimaaliarvon kanssa vuorokauden. Jostain kumman syystä se pyöristyy kokonaisluvuksi kun se näkyy textboxissa. Koodissani on useita samanlaisia kohtia ja textboxeja, ja niissä muissa arvot ovat ihan ok. Olen käynyt koodin ja textboxit läpi ainakin kymmenen kertaa mutta tuloksetta. Koodi on periaatteessa sama kuin muissakin kohdissa.
Onko tällaisesta kokemuksia. Voiko johtua muusta kuin koodaajasta ja koodista?
Hmm. Pastees tähän hieman koodia, niin voin auttaa.
Oletko varmistanut ettet ole dimmannut muuttujaa integeriksi
dim muuttuja as integer
laita näin
dim muuttuja as double
niin ainakin pitäis desimaalit näkyä.
Heh. Dimmannut :D. Jeps juup, tee rndprogyn kertomalla tavalla, niin toimii, jos ei pastea tähän osaa koodistasi
Tässä ois se kohta, jossa uskon ongelman syntyvän. On kyllä tuossa palanen sitä ohjelmaa tuossa pakattuna, jos haluatte saada paremman kuvan ongelmasta. Pistää paniikin puolelle kun deadline puskee päälle ja olen nyt vuorokauden tapellut tuon yhden arvon kanssa.
Kiitti!
'-------------------------------------
Private Sub ExtremeD()
Dim ADO_conn As New ADODB.Connection
Dim db_rset As New ADODB.Recordset
Dim table_name As String
Dim sql_string As String
Dim x As Integer
'määritellään yhteys access- kantaan
ADO_conn.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Development\Databases\Taip.mdb"
'avataan yhteys
ADO_conn.Open
'luetaan silmukassa taulujen minimi- ja maksimiarvot
For x = 9 To 18 Step 1
'DoEvents
'muokataan luettavan taulun nimi
table_name = "[Combination " & x & "]"
'määritellään suoritettava sql-lause
sql_string = "select min(taip) as minimi, max(taip) as maximi from " & table_name
'suoritetaan sql-lause
db_rset.Open sql_string, ADO_conn, adOpenDynamic, adLockOptimistic
db_rset.MoveLast 'tämä ei ole välttämätön
'alustetaan tekstikentät eka taulun kyselyn tuloksilla
If txtMinDComb.Text = "" Then
txtMinDComb.Text = table_name
txtMaxDComb.Text = table_name
txtMinDValue.Text = db_rset.Fields(0)
txtMaxDValue.Text = db_rset.Fields(1)
End If
'vertaillaan kyselyn palauttamia arvoja. Jos min tai max muuttuu,
'otetaan arvot talteen tekstikenttiin.
If db_rset.Fields(0) < Val(txtMinDValue.Text) Then
txtMinDValue.Text = db_rset.Fields(0)
txtMinDComb.Text = table_name
'***************************************
'txtMinDValue-boxiin tulee kokonaisluku
'vaikka ei pitäis, txtMaxDValue toimii kuten pitää
'***************************************
txtMinDValue.Text = Format(txtMinDValue.Text, "Fixed")
End If
If db_rset.Fields(1) > Val(txtMaxDValue.Text) Then
txtMaxDValue.Text = db_rset.Fields(1)
txtMaxDComb.Text = table_name
txtMaxDValue.Text = Format(txtMaxDValue.Text, "Fixed")
End If
'suljetaan recordset. Muuten tulee virhe.
db_rset.Close
Next x
'lopuksi suljetaan yhteys.
ADO_conn.Close
Call MakeExtremeD
End SubVirhe paikallistettu. Ohjelma etsii ääriarvot 29 taulukosta ja näyttää niiden kahden taulukon arvot, joista löytyy pienin ja suurin arvo. Tällä kertaa pienin arvo olikin sattumalta juuri siinä yhdessä taulukossa, jonka yhden sarakkeen tietotyyppi oli jäänyt kokonaisluvuksi. Siitä johtui koko hässäkkä.
Uskokaa tai älkää mutta valmistuminen koulusta voi olla pienestä kiinni. Yhden pienen mokan takia voi innssityö myöhästyä. Syvältä tämä koodaaminen!
Aihe on jo aika vanha, joten et voi enää vastata siihen.