Newsgroup: it.comp.appl.access
Titolo: PROBLEMA: accodamento a una tabella con un valore preso da un'altro

Buongiorno NG,
premetto che so  0 di VBA.
Devo accodare alla tabella versioni la data di oggi per ogni cliente
presente nella tabella clienti.
Il risultato dovrebbe essere:
VERS. ID     DATA       CLIENTE
1                 26/04/07    ABC
2                 26/04/07    EBC
3                 26/04/07    IBC
Come posso fare?
Penso che dovrei aprire la tabella clienti tramite SQL via vba, ma il
codice lo scrivo sbagliato.
E' giusto aprire così una query?
Dim dbefg As Database
Dim efg As DAO.Recordset
Dim efa As DAO.Recordset
Dim fld As Field
Dim strSQL As String
Set dbefg = CurrentDb
Set efg = dbefg.OpenRecordset("Select cli_id, cli_ragsoc FROM
TBL_CLIENTE")
'strSQL = "SELECT cli_id FROM TBL_CLIENTE;"
'DoCmd.RunSQL strSQL
Set efa = Me.RecordsetClone
If efg.RecordCount = 0 And efa.RecordCount = 0 Then
        MsgBox "non ci sono clienti"
        Exit Sub
    Else
        Debug.Print efg.RecordCount
        Debug.Print efa.RecordCount
        efg.MoveLast
        efg.MoveFirst
        efa.MoveLast
        efa.MoveFirst
        Do Until efg.EOF And efa.EOF
            efg.Edit
            Me.Bookmark = efa.Bookmark
           ' efg.Fields ("cli_id")
            Debug.Print ("cli_id")
           ' efg.Fields ("cli_ragsoc")
            Debug.Print ("cli_ragsoc")
Grazie infinite x qls suggerimento,
Samantha

E' giusto aprire cosě una query?

Vincenzo Turturro
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com/
---------------------------------------------
E quello di it.comp.as400
http://www.faq400.com/
---------------------------------------------

 >E' giusto aprire così una query?

Ciao Vincenzo,
grazie 1000 x la risposta, tempo fa mi avevi suggerito un'altra qry di
accodamento per verificare di non accodare due volte con la stessa
data, la sintassi l'ho modificata così:
INSERT INTO TBL_VSCSTMP ( vscstmp_cliid, vscstmp_data )
SELECT Cli_id, Date() AS Oggi
FROM TBL_Cliente
WHERE (((TBL_CLIENTE.cli_id) Not In (SELECT vscstmp_cliid FROM
TBL_VSCSTMP WHERE vscstmp_data=Date() )));
La domanda adesso è: come faccio ad accodare dati da due tabelle
sorgenti diverse su una terza?
vorrei che x ogni versione di listino avere l'elenco delle materie
prime.
la terza tabella è così:
LISTINOID   
VERS.ID
     MATERIAID   COSTO   PERC
1                  2                 1                  5
0,1
2                  2                 2                  6
0,2
3                  2                 3                  4,5
0,3
4                  3                 1                  5,1
0,1
5                  3                 2                  5,5
0,2
6                  3                 3                  5,3
0,1
7                  5                 1                  5,2
0,2
8                  5                 2                  5,3
0,1
Attualmente uso la seguente query di accodamento
INSERT INTO TBL_CSTMP ( cstmp_mpid, cstmp_costo, cstmp_perc )
SELECT TBL_MP.mp_id, TBL_MP.mp_costo, TBL_MP.mp_perc
FROM TBL_MP
WHERE (((TBL_MP.mp_id) Not In (SELECT cstmp_mpid FROM TBL_CSTMP WHERE
cstmp_data=Date() )));
Se la tabella versioni ha 3 record, la query di accodamento sopra deve
ciclare 3 volte.
Forse è ingarbugliato, non riesco a venirci fuori.
Grzie
samantha


Ciao Vincenzo,
la query sono riuscita a farla:
INSERT INTO TBL_CSTMP ( cstmp_mpid, cstmp_costo, cstmp_perc,
cstmp_vsid )
SELECT TBL_MP.mp_id, TBL_MP.mp_costo, TBL_MP.mp_perc,
TBL_VSCSTMP.vscstmp_id
FROM TBL_MP, TBL_VSCSTMP
WHERE ((TBL_MP.mp_id) Not In (select cstmp_mpid from TBL_CSTMP) or
(TBL_VSCSTMP.vscstmp_id) Not In (select cstmp_vsid FROM TBL_CSTMP));
così va proprio bene, ora vediamo se riesco a metterla in VBA.
Grzie
Samantha


Mi sbagliavo, non va proprio bene, dovrebbe accodarmi solo i campi
versione vs_id dove la vscstmp_data è = oggi
INSERT INTO TBL_CSTMP ( cstmp_mpid, cstmp_costo, cstmp_perc,
cstmp_vsid )
SELECT TBL_MP.mp_id, TBL_MP.mp_costo, TBL_MP.mp_perc,
TBL_VSCSTMP.vscstmp_id
FROM TBL_MP, TBL_VSCSTMP
WHERE ((TBL_MP.mp_id) Not In (select cstmp_mpid from TBL_CSTMP) or
(TBL_VSCSTMP.vscstmp_id (WHERE TBL_VSCSTMP.vscstmp_data = date())) Not
In (select cstmp_vsid FROM TBL_CSTMP));
e nemmeno
INSERT INTO TBL_CSTMP ( cstmp_mpid, cstmp_costo, cstmp_perc,
cstmp_vsid )
SELECT TBL_MP.mp_id, TBL_MP.mp_costo, TBL_MP.mp_perc,
TBL_VSCSTMP.vscstmp_id (SELECT TBL_VSCSTMP.vscstmp_id WHERE
TBL_VSCSTMP.vscstmp_data = date())
FROM TBL_MP, TBL_VSCSTMP
WHERE ((TBL_MP.mp_id) Not In (select cstmp_mpid from TBL_CSTMP) or
(TBL_VSCSTMP.vscstmp_id ) Not In (select cstmp_vsid FROM TBL_CSTMP));
così non va, come faccio a parametrizzare la data che è presente in
una tabella sorgente



WHERE TBL_VSCSTMP.vscstmp_data = date() and  ((TBL_MP.mp_id) Not In


Onestamente fra i vari messaggi che hai inviato non riesco a capire piů nulla.
Potresti postare semplicemente:
- i nomi delle tabelle coinvolte e se in lettura o in aggiornamento
- per ogni tabella l'elenco dei campi che devi utilizzare, limitatamente a quelli che ti interessano per la selezione
dei record, la lettura e la scrittura dei valori
- la descrizione nella maniera piů semplice possibile di ciň che vorresti fare
E da qui ripartiamo da zero.
