Newsgroup: it.comp.appl.access
Titolo: Queries un piccolo aiuto

Per piacere qualcuno mi puo aiutare a esegire una Queries di questo tipo:
Che nell'intervallo di una data compresa fra data di arrivo e data di uscita
abbia un certo impotro io penso che si possa usare la funzione iif ma non
sono riuscita a capirla
qualcuno gentilmente mi puo aiutare
grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Ciao kele101,
se sei in visualizzazione struttura query inserisci sotto il campo data in
corrispondenza della riga criteri
Between #15/01/2004# And #31/12/2004# (ovviamente metterai le date del caso)
e sotto il campo importo sempre in corrispondenza della riga criteri
l'importo da cercare (ad es. 1200)
Il risultato SQL sarà
--------------------
SELECT *
FROM Tabella
WHERE Data Between #01/15/2004# And #12/31/2004#
     AND Importo=1200
---------------------
Ciao Giorgio

 ha scritto:

Intanto ti volevo ringraziare per la tua gentile risposta ma il mio problema
penso sia un po più difficile, nel senso che io ho un campo con la data di
arrivo e un campo con la data di parteza per fare quello che tu mi hai
sugerito devo unire i due campi sulla querry([Data di arrivo] & " " & [Data
di partenza]) ? però ho provato ed il risultato è stato che quando provo ad
eseguire la querry mi econo le due date ma quando imposto i criteri non
genera nessun risultato come devo fare perpiacere ?
Ti ringrazio anticipatamente
ciao


 Ti ringrazio anticipatamente
Ciao kele101,
allora, hai una tabella con due campi [Data di arrivo] e [Data di partenza]
, vuoi sapere se una certa data è compresa tra i valori contenuti questi due
campi ?
 in visualizzazione struttura query inserisci in una colonna vuota [Data da
cercare] in corrispondenza della riga criteri inserisci  Between [Data di
arrivo] And [Data di partenza] e sotto il campo importo sempre in
corrispondenza della riga criteri l'importo da cercare (ad es. 1200)
risultato Sql
----------------------------
SELECT *
FROM Tabella
WHERE  [Data da Cercare] Between [Data di arrivo] And [Data di partenza]
     AND Importo=1200
---------------------------
se non è così ti prego di farmi un'esempio pratico.
Ciao Giorgio

Il 13 Apr 2004, 16:14, "giorgio rancati"

Scusa se non sono riuscito a spiegarmi bene ma il mio problema è questo: ho
un piccolo residence composto da vari appartamenti, ho costruito un piccolo
database in access per aver la possibilita di gestire al meglio gli arrivi e
le partenze e alcuni report che per legge sono obbligatori, però adesso
volevo incrementarlo con alcune migliorie, una fra queste è la possibilità
di avere l'importo della stanza in automatico in base a quanto rimane
occupata la stessa( grazie alla data in arrivo e alla data in partenza ).
Quindi il mio problema è come far eseguire in automatico il conteggio
dell'importo in base a queste due date, se hai la possibiltà di aiutarmi ti
ringrazio ciao



-------------------------
 ([Data di partenza]-[Data di arrivo])*[Importo]
------------------------
Ciao Giorgio

Il 14 Apr 2004, 19:45, "giorgio rancati"

Si ma facendo cosi ho un importo unico per tutti i periodi ma il mio
problema è dividere i periodi, che mi convenga fare più querry e quindi per
ogni querry mettere un singolo periodo con un singolo importo giornaliero?
che ne dici che possa funzionare? Si ma come faccio con i periodi che sono a
cavallo fra due perodi? penso sia un casino
intanto ancora grazie vedo che un po all'avolta il problema si risolve
grazie ciao



Ciao,
perchč non provi a mostrare i dati che hai nella tabella e il risultato che
vuoi ottenere forse ho capito ma non vorrei dare un'altra soluzione a vuoto.
Ciao Giorgio

Il 15 Apr 2004, 18:57, "giorgio rancati"

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Scusa eccomi qua allora
quando io compilo la scheda di un cliente inserisco la data di arrivo e la
data di uscita dall'appartamento esempio dal 15/07/2004 al 20/07/2004
l'importo di questa settimana è questo : i giorni 15-16-17 costano 50€ e i
giorni 18-19-20 costano 60€ l'importo totale è di 50+50+50+60+60+60 totale
330€ per te in access si puo eseguire questa operazione?



hai già una tabella in cui sono contenuti questi importi ? se sì posta
un'esempio dei dati contenuti
Ciao Giorgio

 ha scritto nel
messaggio news:c5milf$h4j$1...@lacerta.tiscalinet.it...

Facciamo così te ne assegno una d'ufficio.
Hai una tabella di nome Importi con i campi DaData , aData e Importo e con i
seguenti dati
---------------------
DaData     AData     Importo
15/07/2004 17/07/2004 50,00
18/07/2004 20/07/2004 60,00
-----------------------
Hai una maschera con i controlli DaData , AData e TotImporto (la maschera
non ha come origine la tabella importi)
vai in struttura maschera e premi il pulsante Codice
inserisci questa funzione
---------------
Function CalcolaImporto(ByVal Da As Variant, ByVal a As Variant) As Double
    Dim i As Long
    Dim Importo As Variant
    If IsDate(Da) = False Or IsDate(a) = False Then
       CalcolaImporto = 0
       Exit Function
    End If
    For i = Da To a
        Importo = Importo + DLookup("Importo", "Importi", i & " between
DaData AND AData")
    Next
    CalcolaImporto = Importo
End Function
---------------
nel controllo TotImporto alla voce origine controllo inserisci
=CalcolaImporto([DaData];[AData])
salva la maschera e aprila, se nella casella DaData inserisci 15/07/2004  e
nella casella aData inserisci 20/07/2004  otterrai in TotImporto il valore
330
Ciao Giorgio



No una tabella con questi importi non l'ho mai fatta perchè non sapevo come
strutturarla per ora ho solo tabella con tutti i dati rigurdanti le
prenotazioni e un semplice controllo sulla caparra che quella è fissa il 30%
dell'importo che è stato sempre inserito a mano e mi piacerebbe che lo
inserisse in automatico se possibile cona ne dici?


 ha scritto nel messaggio
news:151Z38Z201Z2Y1...@usenet.libero.it...

Dico di fare un passo alla volta, prima crea la tabella degli importi (tipo
quella da me suggerita) e poi metti in pratica il calcolo come da mio
esempio. Per la caparra che ci vuole a fare un calcolo percentuale in una
casella testo ?
Ciao Giorgio

Si la caparra l'ho gia eseguita con una casella di testo facendo il 30%
dell'importo, ma tu mi dici di provare a fare una tabella don gli importi,
la devo strutturare cosi:
Data di arrivo
Data di partenza
Importo
Ma poi come faccio a relazionarla con quella principale in cui inserisco
tutti i dati?



Non la relazioni, non hai letto la mia risposta di due giorni fa?
Ciao Giorgio
Risposta del 15/04/2004 21:31
==============================




Eccomi qua
allore ho provato tutta ieri ad eseguire quello che mi hai suggerito ( è
vero non avevo visto la tua risposta del 15/04/2004 scusami ) ho creato la
tabella con :
--------------------------------
Idimporti DaData AData Importo
1 15/07/2004 17/07/2004 € 50,00
2 18/07/2004 20/07/2004 € 60,00
---------------------------------
pui sono andato nella struttura della maschera principale ( come dici tu non
collegata alla tabella importi e quindi struttura e codice ed ho inserito
quello che mi hai mandato però facendo alcune modifiche perchè questa
maschera fa riferimento alla tabella principale dove sono presenti [data di
arrivo] e [data di partenza] allora la ho cosi modificata
--------------------------------------------
Option Compare Database
Option Explicit
Private Sub Comando49_Click()
On Error GoTo Err_Comando49_Click
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'Paste Append
Exit_Comando49_Click:
    Exit Sub
Err_Comando49_Click:
    MsgBox Err.Description
    Resume Exit_Comando49_Click
 
End Sub
Private Sub Comando50_Click()
On Error GoTo Err_Comando50_Click
    DoCmd.Close
Exit_Comando50_Click:
    Exit Sub
Err_Comando50_Click:
    MsgBox Err.Description
    Resume Exit_Comando50_Click
 
End Sub
Function CalcolaImporto(ByVal da As Variant, ByVal a As Variant) As Double
    Dim i As Long
    Dim Importo As Variant
    If [Data di arrivo] = False Or [Data di partenza] = False Then
       CalcolaImporto = 0
       Exit Function
    End If
    For i = da To a
        [tot importo] = Importo + DLookup("Importo", "[tot Importo]", i & " between
DaData AND AData")
    Next
    CalcolaImporto = Importo
End Function
----------------------------------------------
Naturalmente la prima parte della relazione era gia presente come codice e
quindi io l'ho aggiunta di seguito.
Poi come dici tu ho inserito nel controllo tot importo della maschera
----------------
=CalcolaImporto([DaData];[AData])
----------------
Pero gia tormando a visulizzazione maschera nella stringhetta tot importo mi
esce questo
----------------
#Nome?
----------------
quindi io penso ( anzi sono certo ) di aver sbagliato qualcosa
mi sapresti aiutare?
Io intanto provo a vedere se riesco ad uscirne dasolo ma è tutta ieri che
provo intanto grazie e ciao


 provo intanto grazie e ciao
La funzione non va modificata, devi lasciarla cosě come č.
Devi solo inserire nel controllo TotImporto il riferimento ai tuoi campi
nella tabella
---------------
=CalcolaImporto([Data di arrivo];[Data di partenza])
----------------
Ciao Giorgio


Ho provato a rimetterla in maniera originale la formula ma mi da errore si
sintassi e mi evidenzia in giallo la prima riga
Function CalcolaImporto(ByVal da As Variant, ByVal a As Variant) As Double
---------^riga che si evidenzia in giallo^--------------
Dim i As Long
Dim Importo As Variant
If IsDate(da) = False Or IsDate(a) = False Then
CalcolaImporto = 0
Exit Function
End If
For i = da To a
Importo = Importo + DLookup("Importo", "Importi", i & " between
DaData AND AData")
--------^riga che si evidenzia in rosso^------------
Next
CalcolaImporto = Importo
End Function
Cosa posso fare?


Forse sono riuscito era solo un problema di caporighe adesso riprovo dopo ti
so dire ma penso sia tutto OK



OK HO PROVATO VA TUTTO PERFETTAMENTE
Adesso però ;-) mi sono accorto che ho un altro peroblema anzi tre, io te li
espongo se dici che si possone risolvere bene senò amem i miracoli non si
possono fare(riferito a me).
1) Io nel mio database nella tipologia degli appartamenti ne ho inseriti di
tre tipi (es: Tipo "A","B","C","D")i quli hanno quattro costi diversi per
gli stessi periodi, quindi gli importi totali sono diversi.
2) un'altro controllo che devo eseguire, che come capirai molto utile, è che
nello stesso appartamento deve esser occupato da una sola persona in quel
periodo senò è un casino.
3) ultimo problema,penso il piu semplice , ho visto, azi mi hanno
indirizzato a vedere un esempio di Rappresentazione, su Report, di periodi
temporali mediante segmenti presente sugli esempi dei report nel sitocomune
ma fin ora non sono riuscito a metterlo in pratica nel mio database
Che ne dici hai voglia di darmi una mano?
Voglio troppo?
Dimmi se ho rotto gia abbastanza
intanto ancora grazie e ciao



ciao,
1) aggiungi un campo Categoria testo 1 carattere nella tabella Importi, fai
la stessa cosa nella tua tabella prenotazioni.
cambia la funzione cosě
-------------------------
Function CalcolaImporto(ByVal Da As Variant, ByVal a As Variant, Byval
Categoria AS String) As Double
    Dim i As Long
    Dim Importo As Variant
    If IsDate(Da) = False Or IsDate(a) = False Or "" & Categoria="" Then
       CalcolaImporto = 0
       Exit Function
    End If
    For i = Da To a
        Importo = Importo + DLookup("Importo", "Importi", i & " between
DaData AND AData AND Categoria='" & Categoria & "'")
    Next
    CalcolaImporto = Importo
End Function
-----------------------------
nel tuo controllo TotImporto metti
=CalcolaImporto([DaData];[AData];[Categoria])
2) Crea la funzione occupato
-------------------------------------
Function Occupato(ByVal Da As Variant, ByVal a As Variant, Byval Categoria
AS String) As String
    Dim i As Long
    Dim Importo As Variant
    If IsDate(Da) = False Or IsDate(a) = False Or ""  & Categoria="" Then
       Occupato= ""
       Exit Function
    End If
    For i = Da To a
        If  "" & DLookup("Categoria", "Prenotazioni", i & " between [Data di
arrivo] AND [Data di partenza] AND Categoria='" & Categoria & "'") <>"" then
            Occupato="Sě"
           exit Function
        End if
    Next
    Occupato="No"
End Function
--------------------------------
occhio agli a capo Dlookup č tutto su una riga.
Nella tua maschera aggiungi un controllo TestOccupato e inserisci come
origine
=Occupato([DaData];[AData];[Categoria])
3) Non conosco quell'esempio e sinceramente non ho molta voglia di provarlo.
Ciao Giorgio


ciao,
1) aggiungi un campo Categoria testo 1 carattere nella tabella Importi, fai
la stessa cosa nella tua tabella prenotazioni.
cambia la funzione cosě
-------------------------
Function CalcolaImporto(ByVal Da As Variant, ByVal a As Variant, Byval
Categoria AS String) As Double
    Dim i As Long
    Dim Importo As Variant
    If IsDate(Da) = False Or IsDate(a) = False Or "" & Categoria="" Then
       CalcolaImporto = 0
       Exit Function
    End If
    For i = Da To a
        Importo = Importo + DLookup("Importo", "Importi", i & " between
DaData AND AData AND Categoria='" & Categoria & "'")
    Next
    CalcolaImporto = Importo
End Function
-----------------------------
nel tuo controllo TotImporto metti
=CalcolaImporto([DaData];[AData];[Categoria])
2) Crea la funzione occupato
-------------------------------------
Function Occupato(ByVal Da As Variant, ByVal a As Variant, Byval Categoria
AS String) As String
    Dim i As Long
    Dim Importo As Variant
    If IsDate(Da) = False Or IsDate(a) = False Or ""  & Categoria="" Then
       Occupato= ""
       Exit Function
    End If
    For i = Da To a




Ho provato con la risoluzione del primo problema ma nel controllo mi da
#Nome? e non so perchč ho provato 3 volte a rifare quello che mi hai detto
forse risbaglio qualcosa? nel cambiare la funzione mi vengono due righe
rosse e io le ho cambiate togliendo il caporiga e mettendole continue
lasciando uno spazzio č giusto? il secondo posso provarlo lostesso anche se
il primo non va?e metto sempre di seguito la funzione occupato ?
Ancora grazie e ciao


 il primo non va?e metto sempre di seguito la funzione occupato ?
direi che è meglio far andare il primo comunque va inserito di seguito al
primo.
Ciao Giorgio




 nello stesso periodo e non fa niente cosa posso aver sbagliato?
Già mi sono confuso con i nomi dei campi, però
come hai sistemato =CalcolaImporto([Data di arrivo];[Data di
partenza];[Categoria])
potevi anche sistemare =Occupato([Data di arrivo];[Data di
partenza];[Categoria])
Ciao Giorgio

Il 19 Apr 2004, 20:25, "giorgio rancati"

Ciao
Si avevo gia provato a cambiare il controllo ma mi era sempre disattivato,
ma stamattina come mi dicevi tu Occhio al campo DLookup è tutto sulla stessa
riga io ieri sera avevo soltanto sistemato la riga sotto e non quella di
"Occupato=si "comunque adesso l'ho sistemata ma mi da un errore quando vado
in maschera mi dice "errore di complilazione" "End if senza blocco if" ho
provato a togliere anche if ma mi da sempre errore cosa posso fare
grazie ciao
