Newsgroup: it.comp.appl.access
Titolo: assegnare valori da codice

questa è piu complessa
ho bisogno di assegnare del codice ad un comando che mi permette di
assegnare valori
ho una maschera dove tramite 2 controlli calendario, uno data inzio e
l altro data fine
faccio una query su una tabella calendario aperta in una sottomaschera
esempio seleziono 1 gen 2010 e 10 gennaio 2010 e in questa
sottomaschera vedo 1 10 record
ora voglio assegnare ad un campo di un altra sottomaschera i valori
del campo Id della sottomawschera che va dal 1 al 10 gennaio
praticamente
dalla sottomschera calendario avro tramte la queri
1-1-2010 ID1
2-1-201 ID2
...
10.1.2010 Id10
questi 10 valori devono andare ad essere inseriti nellasottomaschera
prenotazioni
ID1Mascheraprenotazioni=ID1Mascheracalendario(1-1-2010)
ID2Mascheraprenotazioni=ID2Mascheracalendario(2-1-2010)
e cosi via
spero di essermi spiegato bene...
grazie


ho provato a inserire questo codice
Dim RS As New ADODB.Recordset
SQL = "SELECT Id FROM Calendario! WHERE [Calendario]![Anno]=Annostart
and [Calendario![Mese]=MeseStart and [Calendario]!
[Giorno]=giornostart"
RS.Open SQL, CurrentProject.Connection
Dim valore
valore = RS!([Prenotazioni]![Id])
per copiare il valore di 
calendario.id
 secondo la query fatta a
Prenotazioni.id
pero mi da un errore di compilazione, il tipo di dichiarazione non
valido
..insomma a questo punto non riesco piu ad andare avanti e sono
bloccato..
anche con le macro..non so come procedere
suggerimenti?
grazie

 - Mostra testo citato -
ho povato con questo codice, per provare ad ottenere almeno un record
Dim strSQL As String
Dim varOPER As Variant
Dim db As DAO.Database
Set dab = CurrentDb
Dim rstSETDIRECORD As DAO.Recordset
strSQL = "SELECT Calendario.ID " & _
            "FROM CALENDARIO " & _
            "WHERE Calendario.Giorno = 1 " & _
            "AND Calendario.Anno = 2010 " & _
            "AND Calendario.Mese = febbraio;"
Set rstSETDIRECORD = dab.OpenRecordset(strSQL, dbOpenSnapshot)
ma mi da errore..run time PARAMETRI INSUFFICIENTI PREVISTO 1
sto diventando matto..provando centinai di codice e query..ma non
riesco!
help!

 ...
Per il resto non si capisce bene cosa vuoi fare e perché.
-- 
Ciao
Karl
*********
Access FAQ: 
www.donkarl.com/it
 


allora cosa voglio fare
nella maschera calendario ho 2 controlli activexcalendario,dai quali
imposto data iizio e data fine
questi 2 dati mi serviranno per fare una query su una tabella dalla
quale avro una serie direcord di ritorno,che vengono visualizzati
nella sottomaschra calendaro
ora con un pulsante sul comando click
voglio prelevare da questa serie di record  i campi ID e copiarl in un
altra tabella (aperta nella mAschera calendario come "sottomachera
prenotazioni" insieme ad altri dati che forniro con caselle di testo
nella maschera
il funzionamento è questo
ho una tabella calendario dove ho costruito un calendario fatto da n
record ,ognuno corrispondente a un giorno del 
calendario.la
 tabela
calendaio contiene i campi id anno mese girono,quindi, avendo inserito
10 anni avro piu o meno 365*10 record
ho un altra tabela Prenotazioni formata da un campo ID e da un campo
"NOTE"
NElla maschera principale di lavoro,tramite i calendario scelgo un
periodo do rifeimento che mi si aprira nella sottomaschera
calendario(basata su tabella calendario)
ho una casella di testo vuota e un pulsante di comando
devo associare ai giorni selezionati la nota inserita nella casella di
testo vuota
per questo voglio prelevare dalla sottomaschera calendario ID (che è
un numero progressivo dei giorni dell'anno) per inserirlo in
prenotazioni insieme al testo
cosi che in prenotzioni avro la visulizzazione di cio che ho inserito
come NOTE in ogni giorno dell anno
esempio..seleziono un giorno solo 1 febbraio 2010.avra l 'id
32(essendo il 32 giorno dell anno)
voglio prendere sto 32 e inserirlo in un nuovo record in
Prenotazioni:ID insieme alle note
cosi che in un altra query,scegliendo il 1 febbraio, tramite la
proprieta Iner join legata all id mi ritorna oltre il giorno dell anno
lenote scritte in prenotazioni
spero che si capisca un meglio
ciao

 wrote:

cmq con le apici su febbraio mi da errore di compilazione

 wrote:

ulteriore aggiornamento...gli apici ho messo quelli giusto..e
va...solo che da un altro errore
"tipo di dati non corrispondenti nell espressione criterio"
...magari ci sono altrimodi..io sto solo cercando per tentativi di
capire coe estrapolare il valore di un campo da una serie di record
otenuti tramite query, e copiarlo in un altra tabellA

 otenuti tramite query, e copiarlo in un altra tabellA
Quello che stai tantando di fare va bene, ma va scritto nel modo corretto

 - Mostra testo citato -
giorno anno sono numerici
mese è stringa..


Non ci credo neanche se lo vedo.
Verifica se i nomi dei campi ed il loro tipo sono effettivamente quelli.
Comunque e' inutile, mi rimangio l'OK su quello che stai tentando di 
fare,  rifare la select, i dati li hai gia nella proprieta' "Recordset" 
e "Recordsetclone" della sottomaschera.

 - Mostra testo citato -
avevi ragione, i dati inserita da me sono di quel tipo ovviamente, ma
il campo anno era messo tasto
ora quell errore non lo da piu
come devo trattare il campo ID che è definito come contatore?
perchè poi a questo punto una volta estratto..lo devo assegnare
all'altra tabella..
non ho capito molto quello che mi dici riguardo il recordset e
recordselectclone...perdonami, ma non sono proprio "ferrato"

 - Mostra testo citato -
a questo punto ricevo un errore qundo assegno il valore ottenuto,
Calendario.Id
alla fine di tutto ho scritto
Prenotazioni.Id=!Calendario.Id
ma ricevo errore ancora...

 recordselectclone...perdonami, ma non sono proprio "ferrato"
Dim x, y
set x = subform1.recordsetclone
set y = subform2.recordset
x.movefirst  '(per buona misura)
do until x.eof
     y.addnew
 
y.id
 = 
x.id
     .....
     y.update
     x.movenext
loop
subform2.requery  '(se serve, ma non credo)
questo dovrebbe fare quello che vuoi

 - Mostra testo citato -
scusa, ma non è che sono invertite le x e le y?
nel senso , la variabile dichiarata come recordset dovrebbe essere
quella da cui prendo i dati,cioè calendario
e recrdsetclon dovrebbe essere quello dove vado a inserirli...o no?


No

 - Mostra testo citato -
ricevo questo errore all esecuzione:
errore di compilazione
impossibile trovare il metodo o ilmenbro dei dati

 - Mostra testo citato -
ok...modificata una osa l errore di prima non c'è piu
Private Sub Comando23_Click()
Dim x, y
Set x = Form_Sottomaschera_calendario.RecordsetClone
Set y = Form_Sottomaschera_Prenotazioni.Recordset
x.MoveFirst
Do Until x.EOF
y.AddNew
y.Id = x.Id
y.Update
x.MoveNext
Loop
End Sub
pero ora dice Necessario un oggetto!

 - Mostra testo citato -
e da in giallo la line di definizione di y SET Y=.....

 e da in giallo la line di definizione di y SET Y=.....
ma al subform2 (form target) la sorgente dati la hai definita?
Va bene anche una cosa del tipo "select * from tabellaquellachee' where 
1=2". Lo scenario che hai descritto mi sembrava considerare 2 (dicasi 
due) forrm associate a sorgente dati
Guarda che cosa devi mettere in y io l'ho solo accenato (i.e. y.Id = 
x.Id) non conosco ne immagino quali valori tu voglia mettere in y

 - Mostra testo citato -
ma anche y è una è una sottomaschera che pesca dati da una tabella
anzi pe laprecisione è una sottomaschera che pesca dati da 2 tabelle
legate con un inner join
ma anche mettendo una sottomaschera che pesca dati da una tabella e
basta mi da errore
forse che qeusta tabella deve essere creata in qualche modo
particolare?

rasjudah ha scritto:

Il messaggio indica che l'oggetto "Recordset" e' nullo o non esiste.
Non ne capisco il motivo se le cose stanno come hai detto.
E' possibile girargli intorno.
definisci y come:
set y = Currentdb.openrecordset("Prenotazioni")
il resto resta invariato
al termine e' necessaria la requery dellla sottomaschera Prenotazioni

 - Mostra testo citato -
OK!Finalmente funziona!GRAZIE!
pero mi sono accorto che c'è un altra cosa che non funziona
correttamente
per definire l intervallo della query da applicare alla tabella
calendario ho usato l sql col controllo BETWEEN
per cui sulla maschera ho 6 campi che prendono valori(tramite mio
codice) dai 2 calendari
e sono giornostart,gioroend,mesestart,meseend,annostart,annoend
applicando questi valori alla tabella calendario conl between mi
sembrava restiturim lintervallo giusto.poi pero facendo intervalli
diversi mi sono accorto che non va.
la tabella calendario è formata da 4 campi id anno mese giorno...e
sono gia tutti popolati
penso che l 'unico modo per avere l intervallo corretto è farlo
dall,id che è la chiave primaria e quindi  un contatore
dovrei quindi "leggere" ID del record defnito da annostart,mesestart e
giorno start...e andare avanti afino a quello definito
annoend,meseend,giornoend
solo cosi posso ottenere il risultato di query esatto
ora..credo che sia una cosa fatta da codice...
come?

 - Mostra testo citato -
EDIT: dove è scritto 2 calendari..in realta è 1

 - Mostra testo citato -
scusa..il caldo..si si sono 2 calendari, controlli activex


Questo e' un altro problema, consiglio un altro post nuovo