|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
un aiuto per piacere
In visual basic con access, dovrei fare riferimento a una controllo
in una maschera per fare una ricerca con il comando find. Esempio: rs1.FindFirst ("numero like '7' ") rs1.FindFirst ("numero like 'form![tabella1]|[camera]'") La prima istruzione funziona la seconda non mi dà errore ma e come non ci fosse. Mi insegnate come posso fare? grazie mille p.s chiedo scusa ma me ne sono venuti due messaggi e non ho idea perche sia successo
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master Ultima modifica di federchicco : 18-09-2003 alle 02:07. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Tu cmq intendi VBA nn VB puro...cmq prova cosi:
rs1.FindFirst ("numero like '" & form![tabella1]|[camera] & "'") ciaoooooooo |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
Ti ringrazio ma non funziona.
Qualche altra idea? Grazie
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Scusa ma nn ho capito se sei in VB o in VBA ?!?
cmq se fai riferimento alla form: Nome_Form.Nome_Campo non ti funziona |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
Sono in VBA per l'esattezza sto lavorando su un'applicativo in access e mi serviva quella funzione per verificare che ci fosse un numero uguale a un numero presente in una maschera.
In pratica non lo vede proprio. Ho ricopiato pari pari la tua indicazione ma niente. in dettaglio ho questa funzione: Function ricerca() Dim rs1 As DAO.Recordset Set rs1 = CurrentDb.OpenRecordset("camera", dbOpenDynaset) rs1.FindFirst ("numero like '22'") If Not rs1.NoMatch Then MsgBox "camere occupata!" Else MsgBox "camera libera" End If rs1.Close Set rs1 = Nothing End Function Al posto del numero dovrei mettere form![tabella]![camera] Spero di essermi espresso bene. Grazie ancora
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Io ho fatto delle prove, e cosi mi funziona:
rs1.FindFirst ("numero like '" & NomeForm.NomeCampo & "'") |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
Quote:
Ho scritto cosi e mi da errore 424 dicendo che manca l’oggetto. In sostanza io apro la maschera (tabella1) e nel campo “camera” digito un numero e poi lancio quella funzione che deve verificare che nella tabella “camera” esiste un numero uguale. Dov’è che sbaglio? Grazie e scusa
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Ma sembra un po' diverso il codice tuo dal mio...
rs1.FindFirst ("numero like '" & Form![tabella1]![CAMERA] & "'") rs1.FindFirst ("numero like '" & NomeForm.NomeCampo & "'") Cmq io nn conosco bene bene VBA ma sono abb. bene l'SQL, appunto perchè nn utilizzi le query per fare sti meccanismi: SELECT (*) as nNumero FROM Tabella1 WHERE Camera=[valore] dove naturalmente il valore è il tuo numero....cmq altra cosa, il like serve maggiormente per le stringhe, se vuoi confrontare un numero mettigli "=" |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
Ho risolto
Il tuo suggeriemnto era valido. La mia scrittura del codice faceva schifo. Ho scritto form invece che forms.
Adesso funziona benissimo. Se posso approfittare, si può aggiunge un " and " a quella ricerca. Esempio: rs1.FindFirst ("numero like '" & Forms![SITUAZIONE CAMERE]![num-chek] & "'") and data = data corrente. In sostanza dovrei cercare un record che abbia quel tal numero e abbia una data uguale alla data corrente. Grazie infinite
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Si certo ma non così, prova in questa maniera:
rs1.FindFirst ("numero like '" & Forms![SITUAZIONE CAMERE]![num-chek] & "' AND data=#" & date() & "#") Cosi dovrebbe andare, se vedi che la data non va bene nella ricerca allora è perchè vuole il formato americano, ma nulla di che, basta che fai cosi date() lo converti in Format(date(),"mm/dd/yyyy") ciaoooooooooo |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
Grazie mille euro
Ciao
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
di nulla
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
POSSO ROMPERE !!!
Quote:
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
POSSO ROMPERE !!!
Quote:
Se inserisco delle prenotazioni pewr un mes o più, mi capita che se inserisco un doppione nei primi giorni non viene rilevato mentre invece vien rilevato per le date successive. Provo a postarti il codice completo nel caso tu mi possa aiutare. Grazie infinite Private Sub CONFERMA_Click() Dim rs1pren As DAO.Recordset Dim rs2pren As DAO.Recordset 'crea recordset su Tabella1 Set rs1pren = CurrentDb.OpenRecordset("tabella1", dbOpenDynaset) 'crea recordset su foglio2 Set rs2pren = CurrentDb.OpenRecordset("foglio2", dbOpenDynaset) ' crea variabili per ciclo di ricerca Dim i As Integer Dim cercadata Dim ngiorni ngiorni = rs1pren("giorni") cercadata = rs1pren("datapren") 'cerca il record in Foglio2 in base a valori di una maschera che ha come origine dati - tabella1- For i = 1 To ngiorni rs2pren.FindFirst ("camera = " & Forms![tabella1]![camera] & "and datapren = #" & cercadata & "#") 'se trova il record... If Not rs2pren.NoMatch Then DoCmd.Beep MsgBox " La camera scelta è già impegnata !!Cambia la camera e clicca su memorizza ", vbInformation, "Avviso problema" ' va al controllo camera per correggere rs1pren.Edit rs1pren("camera") = 0 rs1pren.Update DoCmd.GoToControl "camera" Exit Sub End If cercadata = cercadata + 1 Next ' chiude gli oggetti rs1pren.Close rs2pren.Close Set rs2pren = Nothing Set rs1 = Nothing 'Esegue la routine per la creazione delle prenotazioni Call AddRecords(ID.Value) Call AddRecords2(ID.Value) 'esegue delle query DoCmd.SetWarnings False DoCmd.OpenQuery "ACCODA-CLIENTE", acViewNormal, acEdit DoCmd.OpenQuery "clienti-pren Query", acViewNormal, acEdit DoCmd.OpenQuery "cancella clienti-pren", acViewNormal, acEdit Beep MsgBox "Prenotazione memorizzata", vbInformation, "Conferma comando" ' avvia un nuovo record DoCmd.GoToRecord acForm, "Tabella1", acNewRec DoCmd.GoToControl "dataric" End Sub
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Sinceramente, sarà l'ora tarda, ma potresti spiegarmi bene cosa ti da errore, ma è un errore del programma o un errore di gestione delle prenotazioni!
Più informazioni mi dai + capisco dato che il progetto è tutto nella tua mente... Grazie 1000 |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
Quote:
Si tratta di gestire le prenotazioni per un albergo e il codice in questione deve servire ad evitare l'inserimento di doppioni. Dunque il problema in sintesi è questo: Riesco a rilevare correttamente i record richiesti solo per quando riguarda quelli con data maggiore di almeno 15 giorni alla data del primo. Ho fatto un sacco di prove e non mi dà nessun errore, solo non vede i record all'inizio. Esempio: Ho inserito delle prenotazioni dal 01/10/03 al 05/11/03 Dal 14/10/03 il codice funziona benissimo nel senso che rileva il record e vien fuori il messaggio. dal 01/10/03 e fino al 13/10/03 anche se una camera esiste già in quella data, non la vede e mi trovo dei doppioni. In definitiva, se io inserisco una prenotazione della camera n°10 per il 05/10/03 e in quella data esiste già una prenotazione, non se accorge. Se invece inserisco una prenotazione di una camera esistente in data 15/10/03 se ne accorge benissimo. Spero di essemi spiegato anche se mi rendo conto che è uno strano problema. Ti ringrazio ancora e sono in debito di una cena ( ho un ristorante a Bologna) Ciao
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Purtroppo VBA nn lo conosco molto, so lavorare con VB + Database che ha una certa connessione al database, ma lavorarci denteo non saprei, se tu riesci a trovare un modo di impostare una variabile Recordset e passargli una query di esecuzione siamo a cavallo...
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
Forse ho capito
Ho fatto una marea di prove e sono giunto alla conclusione che il problema si presenta con le date che cominciano con zero.
es: 01/10/03 non la vede ma 29/09/03 la vede Evidentemente c'è qualcosa da sistemare nel formato o nella variabile della data. Hai qualche idea ? Grazie
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Se tu gli passi nella WHERE una formato del genere #Data# di solito ti conviene passarla all'americana facendo una cosa del genere: ..... & "#" & format(date,"mm/dd/yyyy") & "#" ....
Prova |
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Nov 1999
Messaggi: 458
|
Quote:
dove devo correggere ? *********************************+++++ dim cercadata cercadata = rs1pren("datapren") 'cerca il record in Foglio2 in base a valori di una maschera che ha come origine dati - tabella1- For i = 1 To ngiorni rs2pren.FindFirst ("camera = " & Forms![tabella1]![camera] & "and datapren = #" & cercadata & "#") 'se trova il record... If Not rs2pren.NoMatch Then DoCmd.Beep MsgBox " La camera scelta è già impegnata !!Cambia la camera e clicca su memorizza ", vbInformation, "Avviso problema" end if cercadata = cercadata + 1 next ********************************+ Grazie e siamo a due cene
__________________
A7v266-e XP2200 ddr 512 Kingston Ibm 80,Matrox g550,sblive 5.1, dc10+ Case Super micro p4 ali.300 Winxp pro cd-rom + master |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:28.



















