SELECT che non fa quello che voglio AIUTO!!!!!

di Anonimizzato480 il
27 risposte

27 Risposte - Pagina 2

  • Prendi ad esempio il contratto IDCont=162 il suo valore è di 50€, nei pagamenti se cerchi nel campo 'NumContr' il valore 162 vedrai che è stato fatto un pagamento di 50€ quindi il contratto è stato pagato per intero perchè nella tabella Ampliamenti non ci sono record associati all'IDCont=162 e neache nella tabella Apparati. A questo punto il valore del Contratto 'ValContr' è uguale a quello del pagato giusto? Quindi dovrebbe farmelo vedere...ma non lo fa...secondo me è che cerca nelle tabelle Ampliamenti e in Apparati, non trova nulla associato quindi non fa neanche somme, dopodichè nelle condizioni lui va a sommare il 'ValContr' con niente e da come risultato NIENTE...quindi la condizione non può essere verificata!!
    Servono altre spiegazioni?
  • Provi sostituire LA CONDIZIONE in gestione con:
    Val("" &((SELECT SUM(Pagamenti.TotPag) FROM Pagamenti WHERE(Pagamenti.NumContr=Contratti.IDCont)))
    =
    Contratti.ValContr
    +
    Val("" &(SELECT SUM(Ampliamenti.ValAmp) FROM Ampliamenti WHERE(Ampliamenti.IDCont=Contratti.IDCont)))+
    Val("" & (SELECT SUM(Apparati.ValContr) FROM Apparati WHERE(Apparati.IDCont=Contratti.IDCont))))

    Se funziona ti spiego dopo

    Fabian
  • Le Modifice funzionano?

    Fabian
  • Io non ho il database a portata di mano ma a "naso" penso che sulle tabelle con cui vai in join per verificare la somme e che possono anche non contenere record tu dovresti andarci in outer join altrimenti la condizione non ti funzionerà mai.

    Fammi sapere.

    USATE DELPHI E ANDRETE LONTANO.
  • La tua condizione Fabian funziona...grazie tanto ma come hai fatto?Che fa il comando 'Val'?
  • I seguenti campi:
    * Pagato:
    (SELECT SUM(Pagamenti.TotPag) FROM Pagamenti WHERE (Pagamenti.NumContr=Contratti.IDCont))
    * ValoreApp:
    (SELECT SUM(Apparati.ValContr) FROM Apparati WHERE (Apparati.IDCont=Contratti.IDCont))
    * ValoreAmp:
    (SELECT SUM(Ampliamenti.ValAmp) FROM Ampliamenti WHERE (Ampliamenti.IDCont=Contratti.IDCont))

    Possono riportare un valore a "Null".
    Con la funzione "Val("" &" verrà ignorato il valore Null e scritto "0".
    Se c'era nella Tabella un campo = "Null", l'esecuzione non andava a buon fine.

    Fabian
  • E' quello che ho pensato anche io ma non sapevo il modo per fargli tornare 0 ... cmq grazie mille mi hai tirato fuori da un pasticcio!!!

    Ciao e grazie ancora!!!!
  • Ti credo
    Buon lavoro e se vai in ferie: buone vacanze!


    Fabian
  • Ti serve ancore la soluzione?


    :-The cure
  • No grazie Fabian mi ha già risolto il problema ti ringrazio..

    Ciao ciao
  • In parte!! Il 'val' tronca i decimali

    :-The cure
  • Ho verificato il 'val' non tronca i valori decimali andate tranquilli...controlla solo se la select ritorna un valore NULL e in tale caso ritorna 0 altrimenti il valore ritornato dalla SELECT...

    Ciao a tutti e buone ferie
  • Scusate mio ritardo, ma sono in ferie.

    Forse 69Giove74 ha ragione, il errore da lui indicato può verificasi con delle impostazione Internazionali diverso di:
    .=Indicatore Decimali
    ,=Indicatore Miglia
    Da noi, in Italia, normalmente è in inverso.
    Ma io non ho mai provato la funzione val in una select con dei impostazioni Internazionali di Italia. Il mio PC ha normalmente le impostazione non Italiana, cosi non mi rendo conto del errore sulle decimali. Mi dimentico sempre di fare questa verifica.

    Ciao a tutti e fate buone ferie

    Fabian
Devi accedere o registrarti per scrivere nel forum
27 risposte