none
"Error converting data type varchar to float" hanya terjadi pada saat memasukan angka ganjil RRS feed

  • Pertanyaan

  •  private void InsertData()
            {
    
                try
                {
                    double solarAwal = 0;
    
                    Label fvAddID = fvDetailData.FindControl("fvAddID") as Label;
                    TextBox fvAddSolarAkhir = fvDetailData.FindControl("fvAddSolarAkhir") as TextBox;
                    TextBox fvAddForm = fvDetailData.FindControl("fvAddForm") as TextBox;
                    TextBox fvAddTgl = fvDetailData.FindControl("fvAddTgl") as TextBox;
    
                    TextBox fvAddKeterangan = fvDetailData.FindControl("fvAddKeterangan") as TextBox;
                    DropDownList fvAddPengemudi1 = fvDetailData.FindControl("fvAddPengemudi1") as DropDownList;
                    DropDownList fvAddPengemudi2 = fvDetailData.FindControl("fvAddPengemudi2") as DropDownList;
                    double solarAkhir = Convert.ToInt32(fvAddSolarAkhir.Text);
                    int IDNoPolisiTerakhir = Convert.ToInt32(fvAddID.Text) - 1;
                    double solarPengemudi;
    
                    conn.Open();
    
                    cmd = new SqlCommand("select SolarAkhir from tb_TransaksiSolar where NoPolisi='" + ddlFilterNoPolisi.Text + "' and ID='" + IDNoPolisiTerakhir + "'", conn);
                    cmd.CommandTimeout = 0;
                    rdr = cmd.ExecuteReader();
                    //hitung solar awal, jika kondisi mobil belum ada transaksi maka solar awal = 0, else ambil solar awal dari solar pulang dengan id terakhir mobil tersebut sebelumnya
                    if (rdr.Read())
                    {
                        solarAwal = Convert.ToDouble(rdr["SolarAkhir"]);
                    }
    
                    //hitung selisih solar
                    double selisihSolar = solarAkhir - solarAwal;
    
                    if (ddlFilterNoPolisi.Text.Trim() == "SALDO")
                    {
                        solarPengemudi = solarAkhir;
                    }
                    else
                    {
                        //hitung solar pengemudi. jika pengemudi1 atau pengemudi 2 = Gudang / Kantor, maka solar pengemudi = selisih solar. jika pengemudi 1 atau pengemudi 2 tidak ada unsur kantor maka solar pengemudi = selisih solar/2
                        if (fvAddPengemudi1.Text.Equals(Gudang) || fvAddPengemudi2.Text.Equals(Gudang) || fvAddPengemudi1.Text.Equals(Kantor) || fvAddPengemudi2.Text.Equals(Kantor))
                        {
                            solarPengemudi = selisihSolar;
                        }
                        else
                        {
                            solarPengemudi = selisihSolar / 2;
                        }
                    }
    
                    conn.Close();
                    //insert data
                    conn.Open();
                 
                    cmd = new SqlCommand("insert into tb_TransaksiSolar (ID,NoPolisi, Form,Tgl,SolarAwal,SolarAkhir,SelisihSolar,SolarPengemudi,Pengemudi1, Pengemudi2,Keterangan) values ('" + fvAddID.Text + "','" + ddlFilterNoPolisi.SelectedValue + "','" + fvAddForm.Text + "','" + fvAddTgl.Text + "','" + solarAwal + "','" + fvAddSolarAkhir.Text + "','" + selisihSolar + "','" + solarPengemudi + "','" + fvAddPengemudi1.SelectedValue + "','" + fvAddPengemudi2.SelectedValue + "','" + fvAddKeterangan.Text + "')", conn);
                    cmd.CommandTimeout = 0;
                    cmd.ExecuteReader();
                    conn.Close();
                }
                catch (Exception ex)
                {
                    Response.Write("An error occured (Insert data): " + ex.Message);
                    conn.Close();
                }
               
               
            }

    Mohon Bantuan'a dong Master,, ane bingung dmn yg error'a

    makasih

    Selasa, 30 Juli 2013 04.13

Jawaban

  • Hi Nuryanto

    Selamat datang di Forum MSDN

    Mohon maaf atas keterlambatan membalas forum ini

    Kemungkinan besar permasalahannya terletak di baris ini


                    if (rdr.Read())
                    {
                        solarAwal = Convert.ToDouble(rdr["SolarAkhir"]);
                    }

    Untuk solusinya

    1. Silakan periksa apakah value "SolarAkhir" benar-benar ada;
    2. SolarAkhir harus Numeric
    3. Nilai SolarAkhir berada dalam double value range;
    4. Gunakan try() catch() untuk menemukan masalahnya;


    Anda juga dapat memodifikasi kode di atas untuk menemukan kemungkinan penyebab masalahnya

                    if (rdr.Read()) 
                    { 
                        if(rdr["SolarAkhir"]==null) 
                        return; 
                        try 
                           solarAwal = Convert.ToDouble(rdr["SolarAkhir"]); 
                        }catch( Exception ex) 
                        { 
                            response.write(ex.tostring()); 
                        }         
                    }
    

    Terima kasih

    Andy Nugraha

    TechNet Community Support

    Senin, 05 Agustus 2013 01.49
    Moderator