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 Sub
Virhe 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.