Oppure

Loading
04/05/09 19:17
moet
Ciao a tutti.

Ho un database che riempo con diversi campi tra cui delle letture di un contatore idrico.

Le varie letture sono divise per nome barca ( E' un cantiere navale )

Fin qui tutto bene. Apro la connessione al DB, mi faccio la ricerca per nome barca e vado a prendermi le letture. ( volendo potrei effettuare la ricerca per data di inserimento ).


A questo punto devo calcolare la differenza di letture (consigli?) per poi successivamente moltiplicarci la tariffa di consumo.

GRAZIE:blush:
aaa
05/05/09 5:39
theprogrammer
Che consigli ?

Leggi i dati ed elaborali ...

Se fai una domanda piu' specifica ...
aaa
05/05/09 13:07
moet
Il problema sta proprio nell' elaborazione.

Ho un DB con diversi consumi di Yacht su diverse colonnine idriche in diversi giorni.


Io dovrei fare un while per scorrere nel DB le varie letture di consumo per ogni colonna e fin qui tutto bene.

poi dovrei fare la differenza tra la prima lettura e la seconda ma impostando cosi il ciclo è solo dalla seconda lettura che posso fare un confronto altrimenti ne avrei solo una.

Allora la prima l' ho confrontata con un cont che ho messo a 0.

Cosi facendo le altre letture sono corrette ma la prima darebbe solo il totale della colonna ovvero il momento in qui la barca viene connessa alla colonna dell' acqua e io prendo la lettura.

esempio.

IERI arriva la barca in bacino e viene connessa alla colonna dell' acqua di cui io prendo la lettura che ipotiziamo sia 1234,5 m3.

OGGI vado a vedere la colonna e segna 1254,5 m3.

la differenza è di 20,0 m3 ma come l' ho impostata io mi darebbe due letture.

La prima è 1234,5 perchè il confronto è con un cont = 0.

la seconda sarebbe la corretta.

Come faccio a confrontarle alla prima ?




Dim stringaa As String
Dim cons As String
Dim cons2 As String
Dim diffconsumo As String


stringaa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

stringaa = stringaa & App.Path & "\YACHT LIST.mdb"

    

    Set cn = New ADODB.Connection

    Set rs = New ADODB.Recordset

 

    cn.Open stringaa

   sql = "select * from tabella1 where "

 

    sql = sql & " nomebarca like'" & txtcercato.Text & "%'"

 

    sql = sql & " and idrico like'" & "X" & "%'"

    

    rs.Open sql, cn, 1
    
    
     cons2 = 0
    
    
    
    If rs.EOF Then

       
         Set LI = ListView.ListItems.Add(, , "IL CLIENTE NON HA CONSUMI IDRICI")

    Else

        While rs.EOF = False

           

           cons = Val(rs("consumo"))

           If cons > cons2 Then
           
           diffconsumo = cons - cons2
          
           cons2 = cons
           
           MsgBox "Lo Yacht " & rs("nomebarca") & " ha consumato " & diffconsumo & "m3 di acqua"
           
           Else
            
            MsgBox "ERRORE NELL INSERIMENTO DATI", vbCritical, "HELP DESK"
            End Sub
           End If
            
           

           

           

               Set LI = ListView.ListItems.Add(, , rs("nomebarca"))

                   LI.SubItems(3) = (diffconsumo)



             

          rs.MoveNext

         Wend


        

    End If

 

    Set cn = Nothing

    Set rs = Nothing

aaa
05/05/09 13:25
theprogrammer
Secondo me ti stai complicando la vita piu' di quello che sarebbe necessario ... :-)

Ovvero .... prima di tutto, perche' nel database hai una colonna "consumo" e non solo una colonna "lettura"?

Dalla lettura (associata ad una precisa data), riesci ad ottenere i consumi alla data odierna, senza doverli memorizzare nel db.
aaa
05/05/09 13:36
moet
E' li che ti sbagli !!!

l' utente da tastiera riempe il DB con le letture del contatore che ogni volta non è resettato !!!

quindi se ieri arriva la barca e il consumo della colonnina è (2250 metri cubi)

non è il vero consumo ma la partenza !!!

quella cifra la dovro' confrontare con la seconda lettura che faro il giorno dopo.

che sara sicuramente maggiore.


esempio. (IERI) 2250 - 2280 (OGGI) = CONSUMO REALE DI UN GIORNO.


CAPITO ? :heehee: non è cosi facile come sembra!!!
aaa
05/05/09 13:41
theprogrammer
Okay ... quindi il campo che hai chiamato "consumo" in realta' e' la "lettura".

Scusa, ma continuo a non vedere il problema ...

Facciamo un esempio pratico con le VERE colonne del db ...

Penso che avrai

NOMEBARCA LETTURA DATA

o qualcosa di simile ...

Indica dei valori della tabella per le 3 colonne e dimmi cosa vuoi ottenere ...
aaa