Ho indicato:
Private Sub NUM_FT_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Select [PARTITA IVA], [NUM FT] from
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & Me.PARTITA_IVA &
Chr(34) & " AND [NUM FT]=" & Me.NUM_FT)
While rs.EOF
MsgBox rs![NUM FT] & " per il cliente, gi� registrato"
Exit Sub
Wend
Set rs = Nothing
End Sub
ma mi d� errore 3061 "parametri insufficienti".
Suggerimenti?
Grazie infinite
--
Giorgia
� il messaggio di errore completo?
> Suggerimenti?
Non l'hai rivelato ma presumo che l'errore venga nella riga con
l'OpenRecordset. Di solito viene se l'enunciato SQL non � corretto.
Allora fai la prova:
- Crea una nuova query.
- Copia e incolla questa stringa nella vis. SQL della query:
Select [PARTITA IVA], [NUM FT]
from [FATTURE ACQUISTO]
WHERE [PARTITA IVA]='Pippo'
- Apri la vis. struttura e/o dati della query e controlla se vedi un errore.
--
HTH
Karl
*********
Access FAQ: www.donkarl.com/it
probabilmente una delle 2 variabili non sono valorizzate nel momento in cui
le passi al recordset...
fai il debug del codice e assicurati che Me.PARTITA_IVA e Me.NUM_FT siano
valorizzati...
F� cos�
Dim sqlString As String
sqlString = "Select [PARTITA IVA], [NUM FT] from [FATTURE ACQUISTO] WHERE
[PARTITA IVA]=" & Chr(34) & Me.PARTITA_IVA & Chr(34) & " AND [NUM FT]=" &
Me.NUM_FT
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(sqlString)
...
...
poi il resto del codice...
verifica che quando passi su sqlString, diventi l'sql che vuoi...
"Giorgia" <gio...@vitaletrasporti.com> ha scritto nel messaggio
news:hc76ag$msb$1...@aioe.org...
Ciao Karl e Pablitomf,
con le vostre prove ho capito di avere dei problemi con il campo PARTITA IVA
in quanto � popolato solo nella maschera e non nella tabella FATTURE
ACQUISTO.
Allo stato attuale delle cose ho una tbl FATTURE ACQUISTO con il campo CONTO
FORNITORE senza la relativa partita iva collegata, il campo PARTITA IVA �
cio� vuoto.
Questo succede perch� i dati anagrafici del fornitore vengono inseriti
tramite la form ANAGRAFICA FORNITORI: c'� un modo per fare in una tabella un
discorso simile a quando nelle form si indica
CONTO FORNITORE.Column(1) ?
--
Giorgia
Il conto fornitore è quindi slegato dal fornitore stesso?
In tabella no, ma in una maschera puoi accedere a dati di altre tabelle
con Dlookup.
Es: Dlookup("PartitaIva","Anagrafica","IdAnagrafica=" & Me.IdFornitore)
supponendo che nella tua maschera si trovi un IdFornitore.
--
sv
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it
>> > --
>> > Giorgia
>> Ciao Karl e Pablitomf,
>> con le vostre prove ho capito di avere dei problemi con il campo PARTITA
>> IVA
>> in quanto � popolato solo nella maschera e non nella tabella FATTURE
>> ACQUISTO.
>> Allo stato attuale delle cose ho una tbl FATTURE ACQUISTO con il campo
>> CONTO
>> FORNITORE senza la relativa partita iva collegata, il campo PARTITA IVA �
>> cio� vuoto.
>> Questo succede perch� i dati anagrafici del fornitore vengono inseriti
>> tramite la form ANAGRAFICA FORNITORI: c'� un modo per fare in una tabella
>> un
>> discorso simile a quando nelle form si indica
>> CONTO FORNITORE.Column(1) ?
>
> In tabella no, ma in una maschera puoi accedere a dati di altre tabelle
> con Dlookup.
> Es: Dlookup("PartitaIva","Anagrafica","IdAnagrafica=" & Me.IdFornitore)
>
> supponendo che nella tua maschera si trovi un IdFornitore.
>
> --
> sv
>
>
>
Grazie mi sembra interessante ma come posso integrare il fatto che trovo la
partita iva corrispondente con Dlookup con il resto della funzione?
Private Sub NUM_FT_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Select [PARTITA IVA], [NUM FT] from
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & Me.PARTITA_IVA &
Chr(34) & " AND [NUM FT]=" & Me.NUM_FT)
While rs.EOF
MsgBox rs![NUM FT] & " per il cliente, gi� registrato"
Exit Sub
Wend
Set rs = Nothing
End Sub
--
Giorgia
non và non và... così sta storia diventa un ACCROCCO troppo incasinato
(non che non si possa cmq risolvere ovviamente, ma se non ti decidi a
normalizzare il DB la vedo dura)... il tuo WHERE [PARTITA IVA]
dovrebbe diventare WHERE [CONTO FORNITORE] (peccato che tu in questo
registri la Ragione Sociale e non l'ID... Ragione Sociale che potrebbe
essere uguale per più CONTO FORNITORE diversi...)...
> While rs.EOF
> Exit Sub
> Wend
Non facciamo agitare Maurizio :-))
anche perch� quello che tu vuoi fare lascia un po' il tempo che trova. Se
per caso digiti il nr. fattura errato duplichi tranquillamente una fattura
gi� esistente. Per cui il parametro NrFattura non ti da alcuna sicurezza.
Per il dlookup puoi fare
Dim rs As DAO.Recordset
Dim strDlk as string
strDlk=Dlookup("PartitaIva","Anagrafica","IdAnagrafica=" & Me.IdFornitore)
Set rs = CurrentDb.OpenRecordset("Select [PARTITA IVA], [NUM FT] from
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & strDlk &
Chr(34) & " AND [NUM FT]=" & Me.NUM_FT)
--
PECCARITA'!! ;-)
> anche perch� quello che tu vuoi fare lascia un po' il tempo che trova. Se
> per caso digiti il nr. fattura errato duplichi tranquillamente una fattura
> gi� esistente. Per cui il parametro NrFattura non ti da alcuna sicurezza.
Hai ragione, ma come potrei ovviare? Non credo che un db possa sempre
intervenire in caso di errore da parte dell'utente....
> Per il dlookup puoi fare
>
> Dim rs As DAO.Recordset
> Dim strDlk as string
> strDlk=Dlookup("PartitaIva","Anagrafica","IdAnagrafica=" & Me.IdFornitore)
>
> Set rs = CurrentDb.OpenRecordset("Select [PARTITA IVA], [NUM FT] from
> [FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & strDlk &
> Chr(34) & " AND [NUM FT]=" & Me.NUM_FT)
>
> --
> sv
>
> --
--
Giorgia
Private Sub NUM_FT_AfterUpdate()
Dim rs As DAO.Recordset
Dim strDlk As String
strDlk = DLookup("PARTITA IVA", "ANAGRAFICA FORNITORI", "COD FORNITORE=" &
Me.COD_FORNITORE)
Set rs = CurrentDb.OpenRecordset("Select [PARTITA IVA], [NUM FT] from
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & strDlk & Chr(34) & "
AND [NUM FT]=" & Me.NUM_FT)
While rs.EOF
MsgBox rs![NUM FT] & " per il cliente, gi� registrato"
Exit Sub
Wend
Set rs = Nothing
End Sub
ma come risultato ho errore 3075: operatore mancante nell'espressione della
query 'PARTITA IVA'.
il Dlk non ha funzionato?
--
Giorgia
così come è fatto non potrebbe...
"PARTITA IVA" il campo
così come
"ANAGRAFICA FORNITORI" la tabella
hanno uno spazio nel loro nome, quindi vanno tra parentesi quadre
> While rs.EOF
> Exit Sub
> Wend
L'uso delle denominazioni per gli oggetti i campi e le variabili di Access
� una cosa da non sottovalutare.
Vedi:
http://www.donkarl.com/it/FAQ/FAQ1Fondamentali.htm#1.5
Maurizio ti ha gi� fatto notare l'errore.
Specifico per� che il campo COD_FORNITORE nella maschera � =[CONTO
FORNITORE].Column(4)
Forse dovrei trasformarlo in numero per paragonarlo al campo COD_ FORNITORE
della tabella che � un Id numerico?
Riposto la stringa incriminata
strDlk = DLookup([PARTITA IVA], [ANAGRAFICA FORNITORI], [COD FORNITORE=] &
Me.COD_FORNITORE)
--
Giorgia
Ti eri risposta da sola
"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:f2ebc3e7-e034-4057...@v30g2000yqm.googlegroups.com...
On 2 Nov, 10:22, "Giorgia" <gior...@vitaletrasporti.com> wrote:
> >> ma come risultato ho errore 3075: operatore mancante nell'espressione
> >> della
> >> query 'PARTITA IVA'.
>
> >> il Dlk non ha funzionato?
>
> > L'uso delle denominazioni per gli oggetti i campi e le variabili di
> > Access
> > � una cosa da non sottovalutare.
>
> > Vedi:
> >http://www.donkarl.com/it/FAQ/FAQ1Fondamentali.htm#1.5
>
> > Maurizio ti ha gi� fatto notare l'errore.
>
> > --
> > sv
>
> Grazie, ho corretto la mia distrazione ed ora in effetti il tipo di errore
> �
> cambiato:
> 2465: "impossibile trovare il campo"I" a cui si fa riferimento
> nell'espressione
>
> Specifico per� che il campo COD_FORNITORE nella maschera � =[CONTO
> FORNITORE].Column(4)
>
> Forse dovrei trasformarlo in numero per paragonarlo al campo COD_
> FORNITORE
> della tabella che � un Id numerico?
>
> Riposto la stringa incriminata
>
> strDlk = DLookup([PARTITA IVA], [ANAGRAFICA FORNITORI], [COD FORNITORE=] &
> Me.COD_FORNITORE)
>
> --
> Giorgia
strDlk = DLookup([PARTITA IVA], [ANAGRAFICA FORNITORI], [COD
FORNITORE=] & Me.[CONTO
FORNITORE].Column(4) )
Ti eri risposta da sola
mi pareva strano fossi in grado di dare risposte.....
l'errore rimane lo stesso.....
sigh sob
--
Giorgia
Ciao Giorgia
Ma ti dimentichi la corretta sintassi.. mancano le virgolette.
strDlk =DLookup("[PARTITA IVA]", "[ANAGRAFICA FORNITORI]", "[COD
FORNITORE]=" & Me.[CONTO FORNITORE].Column(4))
Le parentesi [] sei obbligata a metterle perch� utilizzi nomi separati da
spazi... purtroppo :-((
ed eventualmente il &chr(34)& prima e dopo me.[CONTO FORNITORE].Column
(4)... nel caso in cui il contenuto fosse un testo
Set rs = CurrentDb.OpenRecordset("Select [PARTITA IVA], [NUM FT] from
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & strDlk & Chr(34) & "
AND [NUM FT]=" & "Me.[CONTO FORNITORE].COLUMN(4)")
ed � il 3085: funzione ' Me.[CONTO FORNITORE].Column(4)' non definita nella
funzione
TENTATIVO 2: visto che il campo Me.[CONTO FORNITORE].Column(4) pur sembrando
numerico � un testo ho usato il consiglio di Pablitomf
"ed eventualmente il &chr(34)& prima e dopo me.[CONTO
FORNITORE].Column(4)... nel caso in cui il contenuto fosse un testo"
cos�:
Set rs = CurrentDb.OpenRecordset("Select [PARTITA IVA], [NUM FT] from
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & strDlk & Chr(34) & "
AND [NUM FT]=" & Chr(34) & "Me.[CONTO FORNITORE].Column(4)" & Chr(34))
ma l'errore diventa di run time n� 3061: 'parametri insufficienti. previsto
1'.
ho creato una storia infinita......
Grazie per la pazienza
--
Giorgia
ma che roba sono quelle VIRGOLETTE prima di Me.[CONTO FORNITORE].Column(4)?
va scritta cos� perch� quello � un controllo:
....AND [NUM FT]=" & Me.[CONTO FORNITORE].COLUMN(4))
o cos�
....AND [NUM FT]=" & chr(34) & Me.[CONTO FORNITORE].COLUMN(4)& chr(34)& ";")
Nulla da fare l'errore 3061 mi si � affezionato.
Ho provato le 2 alternative ma niente
prima di openrecordset
fa una prova...
debug.print "Select [PARTITA IVA], [NUM FT] from
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & strDlk & Chr(34)
& "
AND [NUM FT]=" & Chr(34) & Me.[CONTO FORNITORE].Column(4) & Chr(34)
quel che ti restituisce, provalo in una query e vedi se ti da errore...
Ciao Giorgia..
intanto siamo sicuri dell'esistenza della Column(4) :-))?
Sicuramente sai che la prima colonna della combo � Column(0).
Comunque riscrivila in questa maniera:
...AND [NUM FT]=" & chr(34) & Eval(Me.[CONTO FORNITORE].COLUMN(4)) &
chr(34) & ";")
--
sv
--
questo articolo e` stato inviato via web dal servizio gratuito
"sv" <salvi...@accessgroup.it> ha scritto nel messaggio
news:hd1hdr$h5j$1...@news.newsland.it...
> Giorgia ha scritto:
>
>> >
>> > ma che roba sono quelle VIRGOLETTE prima di Me.[CONTO
>> > FORNITORE].Column(4)?
>> > va scritta cos� perch� quello � un controllo:
>> >
>> > ....AND [NUM FT]=" & Me.[CONTO FORNITORE].COLUMN(4))
>> >
>> > o cos�
>> >
>> > ....AND [NUM FT]=" & chr(34) & Me.[CONTO FORNITORE].COLUMN(4)& chr(34)&
>> > ";")
>
>
>> Nulla da fare l'errore 3061 mi si � affezionato.
>> Ho provato le 2 alternative ma niente
>
> Ciao Giorgia..
> intanto siamo sicuri dell'esistenza della Column(4) :-))?
> Sicuramente sai che la prima colonna della combo � Column(0).
>
> Comunque riscrivila in questa maniera:
>
> ...AND [NUM FT]=" & chr(34) & Eval(Me.[CONTO FORNITORE].COLUMN(4)) &
> chr(34) & ";")
>
> --
> sv
Scusate, il ritardo non � dovuto al disinteresse ma all'influenza!
Salvino, grazie per l'ennesimo tentativo ma neanche questa volta l'errore
3061 � stato eliminato, ora provo con il consiglio di Pablitomf.
La colomn(4) esiste....;-)
--
Giorgia
Me.[CONTO FORNITORE].COLUMN(4) ti restituisce sempre un valore o per caso
ci sono valori nulli? E' testo o numerico?
Non � mai un campo vuoto perch� nella tabella e relativa form originali,
cio� ANAGRAFICA FORNITORI, corrisponde all'ID.
Bhè e il consiglio di Pablitomf? ;)
"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:1b435862-cf47-45c0...@p8g2000yqb.googlegroups.com...
On 12 Nov, 09:02, "Giorgia" <gior...@vitaletrasporti.com> wrote:
> >> > Ciao Giorgia..
> >> > intanto siamo sicuri dell'esistenza della Column(4) :-))?
> >> > Sicuramente sai che la prima colonna della combo � Column(0).
>
> >> > Comunque riscrivila in questa maniera:
>
> >> > ...AND [NUM FT]=" & chr(34) & Eval(Me.[CONTO FORNITORE].COLUMN(4)) &
> >> > chr(34) & ";")
>
> >> > --
> >> > sv
>
> >> Scusate, il ritardo non � dovuto al disinteresse ma all'influenza!
> >> Salvino, grazie per l'ennesimo tentativo ma neanche questa volta
> >> l'errore
> >> 3061 � stato eliminato, ora provo con il consiglio di Pablitomf.
> >> La colomn(4) esiste....;-)
>
> > Me.[CONTO FORNITORE].COLUMN(4) ti restituisce sempre un valore o per
> > caso
> > ci sono valori nulli? E' testo o numerico?
>
> > --
> > sv
>
> > --
>
> Non � mai un campo vuoto perch� nella tabella e relativa form originali,
> cio� ANAGRAFICA FORNITORI, corrisponde all'ID.
Bh� e il consiglio di Pablitomf? ;)
non mi ha restituito niente.....;-(
quindi l'sql � sbagliato!
Posta l'SQL della query che hai costruito con il consiglio di Pablito..
"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:65cfd597-8866-4f99...@g23g2000yqh.googlegroups.com...
On 5 Nov, 12:34, "Giorgia" <gior...@vitaletrasporti.com> wrote:
> > ma che roba sono quelle VIRGOLETTE prima di Me.[CONTO
> > FORNITORE].Column(4)?
> > va scritta cos� perch� quello � un controllo:
>
> > ....AND [NUM FT]=" & Me.[CONTO FORNITORE].COLUMN(4))
>
> > o cos�
>
> > ....AND [NUM FT]=" & chr(34) & Me.[CONTO FORNITORE].COLUMN(4)& chr(34)&
> > ";")
>
> Nulla da fare l'errore 3061 mi si � affezionato.
> Ho provato le 2 alternative ma niente
prima di openrecordset
fa una prova...
debug.print "Select [PARTITA IVA], [NUM FT] from
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & strDlk & Chr(34)
& "
AND [NUM FT]=" & Chr(34) & Me.[CONTO FORNITORE].Column(4) & Chr(34)
quel che ti restituisce, provalo in una query e vedi se ti da errore...
Sto provando quanto mi hai suggerito ma mi da errore 2465 impossibile
trovare il campo "I" nell'espressione.
Premetto di non essere sicura di averlo collocato al posto giusto.....vedere
per credere.....
Private Sub NUM_FT_AfterUpdate()
Debug.Print "Select [PARTITA IVA], [NUM FT] from"
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & strDlk & Chr(34)& "AND
[NUM FT]=" & Chr(34) & Me.[CONTO FORNITORE].Column(4) & Chr(34)
Dim rs As DAO.Recordset
Dim strDlk As String
strDlk = DLookup("[PARTITA IVA]", "[ANAGRAFICA FORNITORI]", "[COD
FORNITORE]=" & Me.[CONTO FORNITORE].Column(4))
Set rs = CurrentDb.OpenRecordset("Select [PARTITA IVA], [NUM FT] from
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & strDlk & Chr(34) & "
AND [NUM FT]=" & Chr(34) & Eval(Me.[CONTO FORNITORE].Column(4)) & Chr(34) &
";")
While rs.EOF
MsgBox rs![NUM FT] & " per il cliente, gi� registrato"
Exit Sub
Wend
Set rs = Nothing
End Sub
uff...
Giorgia
in questo Debug.Print c'� inclusa una variabile non ancora assegnata
(strDlk) per cui ti restituir� qualcosa di incompleto...quindi non va
bene...
> Dim rs As DAO.Recordset
> Dim strDlk As String
> strDlk = DLookup("[PARTITA IVA]", "[ANAGRAFICA FORNITORI]", "[COD
> FORNITORE]=" & Me.[CONTO FORNITORE].Column(4))
ecco, qua puoi mettere il Debug.Print, perch� hai finalmente valorizato
strDlk
segui il debug. e vedi nella finestra immediata cosa ti restituisce il
debug... prendi il risultato, incollalo in una query e vedi che errore ti d�
(o postalo qu�)
Questa � errata comunque in quanto mancano spazi e virgolette:
"Select [PARTITA IVA], [NUM FT] from"
[FATTURE ACQUISTO] WHERE [PARTITA IVA]=" & Chr(34) & strDlk &
Chr(34)& "AND [NUM FT]=" & Chr(34) & Me.[CONTO FORNITORE].Column(4) &
Chr(34)
Deve essere:
"Select [PARTITA IVA], [NUM FT]" _
& " FROM [FATTURE ACQUISTO] WHERE [PARTITA IVA]=" _
& Chr(34) & strDlk & Chr(34) _
& " AND [NUM FT]=" & Chr(34) & Me.[CONTO FORNITORE].Column(4) & Chr(34)
--
sv
--
questo articolo e` stato inviato via web dal servizio gratuito
"Pablitomf (da casa)" <pabl...@hotmail.it> ha scritto nel messaggio
news:6MhLm.94625$9f6.1...@twister1.libero.it...
la query non mi sembra dare errori. chiede per� all'utente di inserire il
numero della fattura.
Questo � il cod. sql della query:
Select [PARTITA IVA], [NUM FT] FROM [FATTURE ACQUISTO] WHERE [PARTITA
IVA]="08862530014" AND [NUM FT]="27"
segnalo per� che il [NUM FT] corrente doveva essere "34" e questo 27 non so
da dove salti fuori.....
ne deduco che il problema stia nel dirgli di confrontare il NUM FT appena
inserito con quelli gi� presenti in tabella nella corrispondenza con la
partita Iva.
Ha una logica quello che scrivo?
Giorgia
> Questo è il cod. sql della query:
>
> Select [PARTITA IVA], [NUM FT] FROM [FATTURE ACQUISTO] WHERE [PARTITA
> IVA]="08862530014" AND [NUM FT]="27"
qual'è il TESTO che compare a video nella richiesta del numeri della
fattura? (scrivimelo per bene)
perchè se il testo è NUM FT, vuol dire che è un campo che nella
tabella [FATTURE ACQUISTO] non esiste.
> segnalo però che il [NUM FT] corrente doveva essere "34" e questo 27 non so
> da dove salti fuori.....
> ne deduco che il problema stia nel dirgli di confrontare il NUM FT appena
> inserito con quelli già presenti in tabella nella corrispondenza con la
qual'� il TESTO che compare a video nella richiesta del numeri della
fattura? (scrivimelo per bene)
perch� se il testo � NUM FT, vuol dire che � un campo che nella
tabella [FATTURE ACQUISTO] non esiste.
--------
S� Pablitomf, il testo � proprio quello NUM FT e infatti nella tabella
[FATTURE ACQUISTO] � presente come FATTURA NUMERO.
Ho modificato la stringa e inserita nella query cos�
Select [PARTITA IVA], [FATTURA NUMERO] FROM [FATTURE ACQUISTO] WHERE
[PARTITA IVA]="08862530014" AND [FATTURA NUMERO]="27"
ma questo "27" ho scoperto essere il CONTO FORNITORE e non il numero della
fattura!
� forse sbagliato il dlookup?
strDlk = DLookup("[PARTITA IVA]", "[ANAGRAFICA FORNITORI]", "[COD
FORNITORE]=" & Me.[CONTO FORNITORE].Column(4))
non capisco....
Giorgia
> Ho modificato la stringa e inserita nella query così
> Select [PARTITA IVA], [FATTURA NUMERO] FROM [FATTURE ACQUISTO] WHERE
> [PARTITA IVA]="08862530014" AND [FATTURA NUMERO]="27"
>
> ma questo "27" ho scoperto essere il CONTO FORNITORE e non il numero della
> fattura!
> è forse sbagliato il dlookup?
bhè se hai messo sopra un NUM FT inesistente al posto di un FATTURA
NUMERO, potrebbe esser tutto... :D
> strDlk = DLookup("[PARTITA IVA]", "[ANAGRAFICA FORNITORI]", "[COD
> FORNITORE]=" & Me.[CONTO FORNITORE].Column(4))
strDlk, ti restituisce la PARTITA IVA giusta?... si? e bhè allora che
ti serve di più? se ti restituisce la P.Iva giusta vuol dire che è
fatto bene... e quindi passa oltre...
il problema sta nel fatto che tu nell'SQL passi in modo giusto il
parametro :
[PARTITA IVA]=" & chr(34) & strDlk & chr(34)....
mentre poi passi decisamente in maniera errata l'altro parametro :
AND [FATTURA NUMERO]=Me.[CONTO FORNITORE].Column(4)
cosa centra Me.[CONTO FORNITORE].Column(4) con il NUMERO FATTURA?...
se tu stessa hai impostato nel DLOOKUP il parametro :
"[COD FORNITORE]=" & Me.[CONTO FORNITORE].Column(4))
vorrà dire che hai capito che quel Me.[CONTO FORNITORE].Column(4)
contieni il codice fornitore e non il numero fattura... per cui perchè
poi lo passi all'SQL sul NUMERO FATTURA pretendendo che ti dia un
risultato diverso da quello ottenuto sopra?
> non capisco....
no, non è vero, il problema è che non ti applichi... scrivi e basta...
a scuola di solito si dice "potrebbe fare di più ma non si impegna" :D
> Giorgia
;)
> non capisco....
no, non � vero, il problema � che non ti applichi... scrivi e basta...
a scuola di solito si dice "potrebbe fare di pi� ma non si impegna" :D
> Giorgia
;)
Grazie per l'incoraggiamento, mi sono impegnata ed ora la stringa SQL �
corretta:
Select [PARTITA IVA], [FATTURA NUMERO] FROM [FATTURE ACQUISTO] WHERE
[PARTITA IVA]="08862530014" AND [FATTURA NUMERO]="34"
per� non mi viene segnalato ci� per cui ho voluto creare questo post cio�
che la ft 34 per la partita Iva 08862530014 � gi� stata registrata.
Uso un If?
...praticamente oltre l'impegno ho bisogno di un insegnante di
sostegno......;-)
Giorgia
Visto che quando ti impegni ci riesci? :D
cmq io farei :
SELECT Count([PARTITA IVA]) AS Tot
FROM [FATTURE ACQUISTO]
GROUP BY [PARTITA IVA], [FATTURA NUMERO]
HAVING [PARTITA IVA]="08862530014" AND [FATTURA NUMERO]="34";
in questo modo il tuo SQL conta le fatture che hanno i parametri che gli
passi...
per cui puoi avrai il tuo campo "Tot" che conterr� il numero delle fatture
gi� inserite con stesso cliente e stesso numero...
If nz(rs!Tot,0)>0 then
Msgbox "Per questo cliente queta fattura � gi� stata inserita " & rs!Tot
& " volte",,"ATTENZIONE"
End If
Grazie mille prof.
- un chiarimento a livello teorico: cosa specifica questa parte? "...&
rs!Tot & " volte",,"ATTENZIONE""
- un chiarimento a livello pratico: dove � corretto inserire il SelectCount?
perch� a me d� "Istruzione non valida all'esterno del blocco Type" ed ho
provato a inserirlo subito dopo il Set rs e sia alla fine quando Set rs=
nothing
Thanks
Giorgia
figurati
> - un chiarimento a livello teorico: cosa specifica questa parte? "...&
> rs!Tot & " volte",,"ATTENZIONE""
è il testo del messaggio...
se rs!Tot (che è il campo Tot del recordset aperto) è maggiore di 0,
vuol dire che sono già presenti in archivio (quindi registrate) "n"
fatture con quelle caratteristiche (perchè potresti pure aver voluto
forzare cmq la registrazione)... quindi rs!Tot indica il numero totale
(il conteggio dei record filtrati) delle fatture trovate...
Se sostituisci (non tu ovviamente) a rs!Tot il valore che ne ottieni
(Es. 5)
il Msgbox:
"Per questo cliente questa fattura è già stata inserita " & rs!Tot
& " volte" ,,"ATTENZIONE""
diverrà e quindi ti restituirà a video:
"Per questo cliente questa fattura è già stata inserita 5 volte" con
un bel titolo "ATTENZIONE"
AMMONIZIONE :
ma ogni tanto, tu un "F1" lo premi? Sai, sull'help troveresti tante
cose carine da imparare... se vai nel codice ad es. ed evidenzi con il
mouse Msgbox, pigiando il tastino F1 ti apparirà la meravigliosissima
e lussureggiante guida, filtrata proprio sul "Msgbox" e la sua
composizione... in questo modo scoprirai come si compone e quali sono
di conseguenza i suoi elementi... questo ovviamente lo puoi fare per
qualsiasi cosa. :-D
> - un chiarimento a livello pratico: dove è corretto inserire il SelectCount?
...ma a cosa ti serve SelectCount?
> Thanks
>
> Giorgia
"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:32283ac2-703e-4d1a...@l2g2000yqd.googlegroups.com...
> Grazie mille prof.
figurati
> - un chiarimento a livello teorico: cosa specifica questa parte? "...&
> rs!Tot & " volte",,"ATTENZIONE""
� il testo del messaggio...
se rs!Tot (che � il campo Tot del recordset aperto) � maggiore di 0,
vuol dire che sono gi� presenti in archivio (quindi registrate) "n"
fatture con quelle caratteristiche (perch� potresti pure aver voluto
forzare cmq la registrazione)... quindi rs!Tot indica il numero totale
(il conteggio dei record filtrati) delle fatture trovate...
Se sostituisci (non tu ovviamente) a rs!Tot il valore che ne ottieni
(Es. 5)
il Msgbox:
"Per questo cliente questa fattura � gi� stata inserita " & rs!Tot
& " volte" ,,"ATTENZIONE""
diverr� e quindi ti restituir� a video:
"Per questo cliente questa fattura � gi� stata inserita 5 volte" con
un bel titolo "ATTENZIONE"
AMMONIZIONE :
ma ogni tanto, tu un "F1" lo premi? Sai, sull'help troveresti tante
cose carine da imparare... se vai nel codice ad es. ed evidenzi con il
mouse Msgbox, pigiando il tastino F1 ti apparir� la meravigliosissima
e lussureggiante guida, filtrata proprio sul "Msgbox" e la sua
composizione... in questo modo scoprirai come si compone e quali sono
di conseguenza i suoi elementi... questo ovviamente lo puoi fare per
qualsiasi cosa. :-D.
Hai ragione, vedr� di sbrogliarmela un po' prima di postare.....pigra che
non sono altro!....che poi a volte ci si mette pi� a scrivere per descrivere
il problema che non a pigiare F1.....;-)
> - un chiarimento a livello pratico: dove � corretto inserire il
> SelectCount?
...ma a cosa ti serve SelectCount?
ehm.....non me l'hai suggerito te?
- cut -
cmq io farei :
SELECT Count([PARTITA IVA]) AS Tot
FROM [FATTURE ACQUISTO]
GROUP BY [PARTITA IVA], [FATTURA NUMERO]
HAVING [PARTITA IVA]="08862530014" AND [FATTURA NUMERO]="34";
> Thanks
>
> Giorgia
uhauhauhauhauhauhauhauhauhauhauhauhauha
quello è il SELECT... da mettere nel recordset al posto di quello che
hai fatto tu. :D
una select che ti restituisce direttamente un campo Tot che calcola in
numero di record (se ne trova 1 restituirà 1, se ne trova 3
restituirà 3...) senza far altro... basterà solo controllare il valore
di questo campo leggendolo e capirai se ci sono duplicati o meno...
a volte credo tu mi stia prendendo in giro :D
"Pablitomf (da casa)" <pabl...@hotmail.it> ha scritto nel messaggio
news:hJWMm.95735$1s6....@twister2.libero.it...
Perdono, stresso ancora su questo argomento ma pur avendo cercato aiuto
sulla guida non ne sono venuta a capo.
Sembra che la sintassi per AS non sia corretta, mi chiede una fine
d'istruzione oppure ) ma non sono riuscita a sistemare.....
Giorgia
Giorgina mi sorge un dubbione :
SELECT Count([PARTITA IVA]) AS Tot FROM [FATTURE ACQUISTO] GROUP BY [PARTITA
IVA], [FATTURA NUMERO] HAVING [PARTITA IVA]="08862530014" AND [FATTURA
NUMERO]="34";
ma la metti sulla stessa riga?
impossibile...
"Pablitomf (da casa)" <pabl...@hotmail.it> ha scritto nel messaggio
news:HBTQm.100818$1s6....@twister2.libero.it...
Usando il debug il problema di sintassi sembra nascere nell' "AS Tot"
continua a dirmi "fine istruzione o )"
che barba!
Giorgia
"Giorgia" <gio...@vitaletrasporti.com> ha scritto nel messaggio
news:hf2mi6$v6f$1...@aioe.org...
Messa cos�
SELECT Count([PARTITA IVA]) AS Tot FROM [FATTURE ACQUISTO] GROUP BY[PARTITA
IVA], [FATTURA NUMERO] HAVING [PARTITA IVA]="08862530014"AND [FATTURA
NUMERO]="34";
mi d� "semplicemente" errore di sintassi senza ulteriori indicazioni
Giorgia
Private Sub NUM_FT_AfterUpdate()
Dim rs As DAO.Recordset
Dim strDlk As String
strDlk = DLookup("[PARTITA IVA]", "[ANAGRAFICA FORNITORI]", "[COD
FORNITORE]=" & Me.[CONTO FORNITORE].Column(4))
Set rs = CurrentDb.OpenRecordset
SELECT Count([PARTITA IVA]) AS Tot FROM [FATTURE ACQUISTO] GROUP BY[PARTITA
IVA], [FATTURA NUMERO] HAVING [PARTITA IVA]='08862530014'AND [FATTURA
NUMERO]='34';
If Nz(rs!Tot, 0) > 0 Then
MsgBox "Per questo cliente queta fattura � gi� stata inserita " & rs!Tot
& " volte", , "ATTENZIONE"
End If
While rs.EOF
Exit Sub
Wend
Set rs = Nothing
End Sub
Mi aiutate a correggere la sintassi di questa stringa malefica??
Grazie infinite
Set rs = CurrentDb.OpenRecordset
SELECT Count([PARTITA IVA]) AS Tot FROM [FATTURE ACQUISTO] GROUP BY[PARTITA
IVA], [FATTURA NUMERO] HAVING [PARTITA IVA]='08862530014'AND [FATTURA
NUMERO]='34';
Giorgia
Giorgiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!!!!!!!!!
ma dico io, vuoi aprire il recordset? e le parentesi nd� stanno?...
il recordset si apre cos� :
Set rs = CurrentDb.OpenRecordset("...ci scrivi il testo della tua
select....")
:)
"Pablitomf (da casa)" <pabl...@hotmail.it> ha scritto nel messaggio
news:WxWRm.102226$1s6....@twister2.libero.it...
Giurin giuretto..........
ho fatto mille prove prima.....con parentesi e "......
ora va....ho sostituito come suggerito da MA le" con '...
sar� quello......eh eh
Comunque, un'ultima (spero) cosa:
il messaggio
If Nz(rs!Tot, 0) > 0 Then
MsgBox "Per questo cliente questa fattura � gi� stata inserita " &
rs!Tot & " volte", , "ATTENZIONE"
Else
End If
viene visualizzato SEMPRE, e se � la prima volta che inserisco la fattura mi
viene indicato giustamente che � "stata registrata 1 volte".
Come posso far comparire il msg solo se � gi� stata inserita quella stessa
identica fattura?
ho provato con
If Nz(rs!Tot, 0) > 1 Then
ma cos� non mi viene segnalato mai niente!
Giorgia
giusto...
> ma cos non mi viene segnalato mai niente!
impossibile...
nel senso che rs!Tot è il conteggio telle fatture con un certo numero
di un certo cliente...
per cui se ce ne sta 1 in archivio, la "if" non valuta rs!Tot
maggiore di 1 per cui non segnala... ma se rs!Tot è maggiore di 1 per
forza deve eseguire il MSGBOX... prima della IF, sulla riga subito
sopra, metti un :
MSGBOX "Conteggio : " & Nz(rs!Tot,0)
salva tutto, e prova a registrare una fattura 2 volte... vedi che ti
da come messaggio.
"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:371aabaf-3b60-401d...@z41g2000yqz.googlegroups.com...
giusto...
uao!...."giusto".....uao!
> ma cos non mi viene segnalato mai niente!
impossibile...
nel senso che rs!Tot � il conteggio telle fatture con un certo numero
di un certo cliente...
per cui se ce ne sta 1 in archivio, la "if" non valuta rs!Tot
maggiore di 1 per cui non segnala... ma se rs!Tot � maggiore di 1 per
forza deve eseguire il MSGBOX... prima della IF, sulla riga subito
sopra, metti un :
MSGBOX "Conteggio : " & Nz(rs!Tot,0)
salva tutto, e prova a registrare una fattura 2 volte... vedi che ti
da come messaggio.
Seguite tue istruzioni alla lettera, il messaggio �
Conteggio:1
Sempre, che la fattura sia gi� stata inserita una volta o mai.
Giorgia
Mi sà che ho capito... inserisci la stessa fattura 3 volte e guarda
cosa ti dà... se in questo caso funziona, è perchè sul secondo
inserimento, non avendo ancora salvato il record, non lo conteggia...
dovrebbe bastare a sto punto, fare un operazione di salvataggio del
record con :
DoCmd.RunCommand acCmdSaveRecord
prima di ogni altra riga di codice... in questo caso, avendo salvato
il record, dovrebbe conteggiarlo nella query che lanci da recordset...
e quindi il messaggio dovrebbe apparirti correttamente...
o pi� di una volta!
> Giorgia
>
>
"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:bbb2c8e3-de93-40a7...@d20g2000yqh.googlegroups.com...
> nel senso che rs!Tot � il conteggio telle fatture con un certo numero
> di un certo cliente...
> per cui se ce ne sta 1 in archivio, la "if" non valuta rs!Tot
> maggiore di 1 per cui non segnala... ma se rs!Tot � maggiore di 1 per
> forza deve eseguire il MSGBOX... prima della IF, sulla riga subito
> sopra, metti un :
> MSGBOX "Conteggio : " & Nz(rs!Tot,0)
> salva tutto, e prova a registrare una fattura 2 volte... vedi che ti
> da come messaggio.
>
> Seguite tue istruzioni alla lettera, il messaggio �
> Conteggio:1
>
> Sempre, che la fattura sia gi� stata inserita una volta o mai.
>
> Giorgia
Mi s� che ho capito... inserisci la stessa fattura 3 volte e guarda
cosa ti d�... se in questo caso funziona, � perch� sul secondo
inserimento, non avendo ancora salvato il record, non lo conteggia...
dovrebbe bastare a sto punto, fare un operazione di salvataggio del
record con :
DoCmd.RunCommand acCmdSaveRecord
prima di ogni altra riga di codice... in questo caso, avendo salvato
il record, dovrebbe conteggiarlo nella query che lanci da recordset...
e quindi il messaggio dovrebbe apparirti correttamente...
macch�.....anche salvando il record e registrando appositamente 3 volte la
stessa fattura il conteggio risulta = 1.
Eppure la definizione di Tot mi sembra corretta....
AS Tot FROM [FATTURE ACQUISTO] GROUP BY[PARTITA IVA], [FATTURA NUMERO]
non mi potr� mai fidare di questo comando......:-(
Giorgia
Giorgia, ti faccio una domanda più che stupida, ma a sto punto è
doverosissima visto che il tutto DEVE funzionare come ti ho detto...
ma la registrazione "PIU VOLTE" della fattura sullo stesso cliente per
la quale tu sostieni che il sistema non funziona, è registrata sul
cliente la cui partita iva e il cui numero sono quelle inserite nella
SELECT?...
Giusto per ricordartelo, tu nella select scegli di conteggiare LA
(quindi singola) fattura "34" del cliente "08862530014"...
che mi dici a riguardo?
"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:aa30df80-6afb-4c7d...@a21g2000yqc.googlegroups.com...
On 4 Dic, 17:08, "Giorgia" <gior...@vitaletrasporti.com> wrote:
> > nel senso che rs!Tot � il conteggio telle fatture con un certo numero
> > di un certo cliente...
> > per cui se ce ne sta 1 in archivio, la "if" non valuta rs!Tot
> > maggiore di 1 per cui non segnala... ma se rs!Tot � maggiore di 1 per
> > forza deve eseguire il MSGBOX... prima della IF, sulla riga subito
> > sopra, metti un :
> > MSGBOX "Conteggio : " & Nz(rs!Tot,0)
> > salva tutto, e prova a registrare una fattura 2 volte... vedi che ti
> > da come messaggio.
>
> > Seguite tue istruzioni alla lettera, il messaggio �
> > Conteggio:1
>
> > Sempre, che la fattura sia gi� stata inserita una volta o mai.
>
> o pi� di una volta!
>
> > Giorgia
Giorgia, ti faccio una domanda pi� che stupida, ma a sto punto �
doverosissima visto che il tutto DEVE funzionare come ti ho detto...
ma la registrazione "PIU VOLTE" della fattura sullo stesso cliente per
la quale tu sostieni che il sistema non funziona, � registrata sul
cliente la cui partita iva e il cui numero sono quelle inserite nella
SELECT?...
Giusto per ricordartelo, tu nella select scegli di conteggiare LA
(quindi singola) fattura "34" del cliente "08862530014"...
che mi dici a riguardo?
no....."ovviamente" no.....
e in effetti non capivo il perch� avessimo specificato una determinata
partita iva e un det.numero di fattura nella Select......
Giorgia
chiamami su MSN cos� ti UCCIDO!!!!!!!!!!!
quei numeri erano per provare se l'SQL funzionava!!!!
m� quei numeri non ti servono pi� cos� come sono!!!
devi sostituire il numero di P.Iva con quello prelevato con la strDlk, e il
numero della fattura prelevato dalla Form!!!! mannaggia a te! :D
Ci stai mandando al manicomio...
>
> chiamami su MSN cos� ti UCCIDO!!!!!!!!!!!
> quei numeri erano per provare se l'SQL funzionava!!!!
>
> m� quei numeri non ti servono pi� cos� come sono!!!
>
> devi sostituire il numero di P.Iva con quello prelevato con la strDlk, e
> il numero della fattura prelevato dalla Form!!!! mannaggia a te! :D
> Ci stai mandando al manicomio...
ehm.....almeno non sarei sola in quella stanzetta del manicomio....
dunque, questo il mio tentativo
Set rs = CurrentDb.OpenRecordset("SELECT Count([PARTITA IVA]) AS Tot FROM
[FATTURE ACQUISTO] GROUP BY[PARTITA IVA], [FATTURA NUMERO] HAVING [PARTITA
IVA]=" & Chr(34) & strDlk & Chr(34) & " AND [FATTURA NUMERO]=" & Me.[NUM
FT])
ma errore di run time 3464 , "tipi di dati non corrispondenti
nell'espressione criterio"
ho provato senza chr ma neanche...
sono da uccidere anche stavolta o basta qualche insulto? ;-)
Giorgia
Qualche insulto basta! :D
Perchè quando c'èra 34 al posto di Me.[NUM FT] la trattavi come testo
e nel tuo SQL lo vuoi trattare come numero?
se mettevi ='34' usando gli apici, vuol dire che era e quindi è un
testo... per cui:
".... AND [FATTURA NUMERO]=" & chr(34) & Me.[NUM FT] & chr(34))
prova
"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:be0c8dc5-f360-44dd...@v25g2000yqk.googlegroups.com...
On 10 Dic, 16:37, "Giorgia" <gior...@vitaletrasporti.com> wrote:
> > chiamami su MSN cos ti UCCIDO!!!!!!!!!!!
> > quei numeri erano per provare se l'SQL funzionava!!!!
>
> > m quei numeri non ti servono pi cos come sono!!!
>
> > devi sostituire il numero di P.Iva con quello prelevato con la strDlk, e
> > il numero della fattura prelevato dalla Form!!!! mannaggia a te! :D
> > Ci stai mandando al manicomio...
>
> ehm.....almeno non sarei sola in quella stanzetta del manicomio....
> dunque, questo il mio tentativo
>
> Set rs = CurrentDb.OpenRecordset("SELECT Count([PARTITA IVA]) AS Tot FROM
> [FATTURE ACQUISTO] GROUP BY[PARTITA IVA], [FATTURA NUMERO] HAVING [PARTITA
> IVA]=" & Chr(34) & strDlk & Chr(34) & " AND [FATTURA NUMERO]=" & Me.[NUM
> FT])
>
> ma errore di run time 3464 , "tipi di dati non corrispondenti
> nell'espressione criterio"
>
> ho provato senza chr ma neanche...
>
> sono da uccidere anche stavolta o basta qualche insulto? ;-)
>
> Giorgia
Qualche insulto basta! :D
Perch� quando c'�ra 34 al posto di Me.[NUM FT] la trattavi come testo
e nel tuo SQL lo vuoi trattare come numero?
se mettevi ='34' usando gli apici, vuol dire che era e quindi � un
testo... per cui:
".... AND [FATTURA NUMERO]=" & chr(34) & Me.[NUM FT] & chr(34))
prova
grandi notizie!
funziona tutto a meraviglia!
e ho finito di farvi ammattire!!
grazie mille per la pazienza!
Giorgia
In realt� devi ringraziare solo Pablitomf che ti ha preso in carico fino
alla soluzione...Gli altri si sono arresi quasi subito.
Ciao, Carlo