Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    tipo string non riesco a fare operazione

    chiedo scusa in anticipo a tutti per il disturbo,

    ho il seguente problema:

    con una pagina default.aspx invio due date tramite POST ad un'altra pagina che interroga un db access (esec.aspx), fin quì + o - sono riuscito.

    una volta che le 2 query mi restituiscono i risultati (ogni query restituisce un singolo risultato, data la conformazione dei dati) , devo fare la sottrazione dei 2 valori.

    se però i valori restitutiti sono troppo grandi mi dà questo errore:

    Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

    Dettagli eccezione: System.FormatException: Formato della stringa di input non corretto.

    Riga 36: consumo.Text = datiVal2.Text - datiVal1.Text
    mi pare che dovrei fare delle conversioni in double ecc..

    ho provato ma nn ne esco...

    allego le pagine di codice.
    p.s. stò usando IIS7

    un grazie in anticipo a chi mi risolve questo problema

    default.aspx
    <html>

    <head>
    <title>...</title>
    <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" type="text/css" media="all" href="skins/aqua/theme.css" title="Aqua" />
    <script type="text/javascript" src="calendar.js"></script>
    <script type="text/javascript" src="calendar-it.js"></script>
    <script type="text/javascript">

    var oldLink = null;
    function setActiveStyleSheet(link, title) {
    var i, a, main;
    for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
    a.disabled = true;
    if(a.getAttribute("title") == title) a.disabled = false;
    }
    }
    if (oldLink) oldLink.style.fontWeight = 'normal';
    oldLink = link;
    link.style.fontWeight = 'bold';
    return false;
    }

    // This function gets called when the end-user clicks on some date.
    function selected(cal, date) {
    cal.sel.value = date; // just update the date in the input field.
    if (cal.dateClicked && (cal.sel.id == "sel1" || cal.sel.id == "sel3"))
    cal.callCloseHandler();
    }

    function closeHandler(cal) {
    cal.hide(); // hide the calendar
    // cal.destroy();
    _dynarch_popupCalendar = null;
    }

    function showCalendar(id, format, showsTime, showsOtherMonths) {
    var el = document.getElementById(id);
    if (_dynarch_popupCalendar != null) {
    // we already have some calendar created
    _dynarch_popupCalendar.hide(); // so we hide it first.
    } else {
    // first-time call, create the calendar.
    var cal = new Calendar(1, null, selected, closeHandler);
    // uncomment the following line to hide the week numbers
    // cal.weekNumbers = false;
    if (typeof showsTime == "string") {
    cal.showsTime = true;
    cal.time24 = (showsTime == "24");
    }
    if (showsOtherMonths) {
    cal.showsOtherMonths = true;
    }
    _dynarch_popupCalendar = cal; // remember it in the global var
    cal.setRange(1900, 2070); // min/max year allowed.
    cal.create();
    }
    _dynarch_popupCalendar.setDateFormat(format); // set the specified date format
    _dynarch_popupCalendar.parseDate(el.value); // try to parse the text in field
    _dynarch_popupCalendar.sel = el; // inform it what input field we use

    _dynarch_popupCalendar.showAtElement(el.nextSiblin g, "Br"); // show the calendar

    return false;
    }

    var MINUTE = 60 * 1000;
    var HOUR = 60 * MINUTE;
    var DAY = 24 * HOUR;
    var WEEK = 7 * DAY;

    function isDisabled(date) {
    var today = new Date();
    return (Math.abs(date.getTime() - today.getTime()) / DAY) > 10;
    }

    function flatSelected(cal, date) {
    var el = document.getElementById("preview");
    el.innerHTML = date;
    }

    function showFlatCalendar() {
    var parent = document.getElementById("display");

    var cal = new Calendar(0, null, flatSelected);

    cal.weekNumbers = false;

    cal.setDisabledHandler(isDisabled);
    cal.setDateFormat("%A, %B %e");

    cal.create(parent);

    cal.show();
    }
    </script>

    <style type="text/css">
    .NuovoStile1 {
    font-family: Trebuchet MS;
    font-size: 14px;
    }
    </style>

    </head>

    <body>

    <form class="NuovoStile1" method="post" action="esec.aspx">
    <table align="center" width="65%">
    <tr>
    <td></td><td></td><td></td><td></td><td></td><td></td>
    </tr>

    <tr>
    <td align="right">impianto </td><td><select name="impianto">
    <option value="Frigo_1">Frigo 1</option>
    <option value="Frigo_2">Frigo 2</option>
    <option value="Frigo_3">Frigo 3</option>
    <option value="Frigo_4">Frigo 4</option>
    <option value="Frigo_5">Frigo 5</option>
    <option value="Frigo_6">Frigo 6</option>
    </select></td><td></td><td></td><td></td><td></td>
    </tr>
    <tr>
    <td align="right">dal giorno </td><td><input type="text" name="data1" id="sel3" size="30"
    ><input type="reset" value=" ... "
    onclick="return showCalendar('sel3', '%d/%m/%Y');"></td><td align="right">ore </td><td><select name="ora1">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    </select></td><td align="right">minuti </td><td><select name="minuti1">
    <option value="00">00</option>
    <option value="15">15</option>
    <option value="30">30</option>
    <option value="45">45</option>
    </select></td>
    </tr>
    <tr>
    <td></td><td></td><td></td><td></td><td></td><td></td>
    </tr>
    <tr>
    <td align="right">al giorno </td><td><input type="text" name="data2" id="sel4" size="30"
    ><input type="reset" value=" ... "
    onclick="return showCalendar('sel4', '%d/%m/%Y');" ></td><td align="right">ore </td><td><select name="ora2">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    </select></td><td align="right">minuti </td><td><select name="minuti2">
    <option value="00">00</option>
    <option value="15">15</option>
    <option value="30">30</option>
    <option value="45">45</option>
    </select></td>
    </tr>
    <tr>
    <td></td><td></td><td></td><td></td><td></td><td></td>
    </tr>
    <tr>
    <td></td><td></td><td></td><td></td><td></td><td><input name="Submit1" type="submit" value="invia"></td>
    </tr>
    </table>
    </form>

    </body>

    </html>

    esec.aspx
    <%@ Page Language="VB" ValidateRequest="false" Debug="true" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <script runat="server">
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Dim cn As OleDbConnection
    Dim cmd As OleDbCommand
    Dim dr As OleDbDataReader
    Dim cmd2 As OleDbCommand
    Dim dr2 As OleDbDataReader
    Dim str As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("miodatabase.mdb")
    cn = New OleDbConnection(str)
    cn.Open()
    'valori prima data
    cmd = New OleDbCommand("SELECT * FROM "& Request.Form("impianto") &" WHERE TagDescription LIKE '%(Kwh)%' AND TagTimeStamp = #" & Request.form ("data1")& " " & Request.Form("ora1") & "." & Request.Form("minuti1") & ".00 #", cn)
    dr = cmd.ExecuteReader()
    'valori seconda data
    cmd2 = New OleDbCommand("SELECT * FROM "& Request.Form("impianto") &" WHERE TagDescription LIKE '%(Kwh)%' AND TagTimeStamp = #" & Request.form ("data2")& " " & Request.Form("ora2") & "." & Request.Form("minuti2") & ".00 #", cn)
    dr2 = cmd2.ExecuteReader()

    'parametri passati da form
    valori1.text = Request.Form("impianto") +" "+ Request.form ("data1") +" "+ Request.Form("ora1") +"."+ Request.Form("minuti1") + ".00"
    valori2.text = Request.Form("impianto") +" "+ Request.form ("data2") +" "+ Request.Form("ora2") +"."+ Request.Form("minuti2") + ".00"

    'ciclo prima data
    While (dr.Read())
    dati1.Text = dr("TagDescription")
    datiVal1.Text = dr("TagValue")
    End While
    'ciclo seconda data
    While (dr2.Read())
    dati2.Text = dr2("TagDescription")
    datiVal2.Text = dr2("TagValue")
    End While
    'ricavo consumo
    consumo.Text = datiVal2.Text - datiVal1.Text
    'chiudi connessione
    dr.Close()
    dr2.Close()
    cn.Close()
    End Sub
    </script>
    <html>
    <head>
    <title>...</title>
    <style type="text/css">
    .NuovoStile1 {
    font-family: "Trebuchet MS";
    font-size: 14px;
    }
    .NuovoStile2 {
    font-family: "Trebuchet MS";
    font-size: 14px;
    font-weight: bolder;
    font-style: italic;
    }
    </style>
    </head>
    <body>

    <form class="NuovoStile1" id="Modulo" runat="server">
    <table align="center" width="50%">
    <tr>
    <td align="right">Torna alla home</td><td></td>
    </tr>
    <tr>
    <td></td><td></td>
    </tr>
    <tr>
    <td align="right"><asp:Label ID="valori1" runat="server"></asp:Label> </td><td></td>
    </tr>
    <tr>
    <td align="right"><asp:Label ID="dati1" runat="server"></asp:Label>: </td><td>
    <asp:Label ID="datiVal1" runat="server" CssClass="NuovoStile2"></asp:Label></td>
    </tr>
    <tr>
    <td></td><td></td>
    </tr>
    <tr>
    <td align="right"><asp:Label ID="valori2" runat="server"></asp:Label> </td><td></td>
    </tr>
    <tr>
    <td align="right"><asp:Label ID="dati2" runat="server"></asp:Label>: </td><td><asp:Label ID="datiVal2" runat="server" CssClass="NuovoStile2"></asp:Label></td>
    </tr>
    <tr>
    <td></td><td></td>
    </tr>
    <tr>
    <td align="right">

    Valore consumo nel periodo (Kwh): </p></td><td><asp:Label ID="consumo" runat="server" CssClass="NuovoStile2"></asp:Label></td>
    </tr>
    <tr>
    <td></td><td></td>
    </tr>
    <tr>
    <td></td><td><input type="button" value="Stampa risultati" onclick="window.print();return false;" /></td>
    </tr>
    </table>
    </form>

    </body>
    </html>
    struttura db

    sono 6 tabelle con campo data e valore

  2. #2
    ho trovato una soluzione ( dato che adesso funziona )

    ho sostituito questa parte di codice
    codice:
    'ciclo prima data
    While (dr.Read())
    dati1.Text = dr("TagDescription")
    datiVal1.Text = dr("TagValue")
    End While
    'ciclo seconda data
    While (dr2.Read())
    dati2.Text = dr2("TagDescription")
    datiVal2.Text = dr2("TagValue")
    End While
    'ricavo consumo
    consumo.Text = datiVal2.Text - datiVal1.Text
    con questa
    codice:
    'ciclo prima data
            'While (dr.Read()) tolgo il ciclo tanto nn serve
            dr.Read()
            dati1.Text = dr("TagDescription")
            datiVal1.Text = CLng(dr("TagValue"))
            'End While
            'ciclo seconda data
            'While (dr2.Read())
            dr2.Read()
            dati2.Text = dr2("TagDescription")
            datiVal2.Text = CLng(dr2("TagValue"))
            'End While
            'conversione e assegnazione valori a 2 variabili
            Dim x, y
            x = CLng(datiVal1.Text)
            y = CLng(datiVal2.Text)
            'calcola consumo
            consumo.Text = (y - x)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.