Newsgroup: it.comp.appl.access
Titolo: Query di accodamento e immissione parametro

Buonasera a tutti,
come ogni weekend mi sono piantata nella revisione del mio database (opera magna
frutto di due anni di lavoro).
Devo duplicare un record di una maschera, ma anche quello della sottomaschera.
Sto usando questo codice (non farina del mio sacco) e per la prima parte č
perfetto, ma non riesco ad implementare la seconda:
------------
Private Sub CopiaIncolla_Click() 
 'Purpose:   Duplicate the main form record and related records in the subform.
[CUT]
 
    strValue1 = InputBox("Inserisci il Nuovo CatalogueNr")
    strValue2 = InputBox("Inserisci il Nuovo Univoco")
   'Duplicate the main record: add to form's clone.
        With Me.RecordsetClone
            .AddNew
                !CatalogueNr = strValue1
                !Univoco = strValue2
       	!Title = Me.Title
       	 !Label = Me.Casa_discografica
                'etc for other fields.
            .Update
-----------------------------------
Questa č la parte che va, ma questa sotto
QUELLA CHE NON VA
            'Duplicate the related records: append query.
            If Me.[Sfr_Audio_PrincipaleTrack].Form.RecordsetClone.RecordCount >
0 Then
                strSql = "INSERT INTO [Tbl_Audio_PRINCIPALETRACK] (CatalogueNr,
Univoco, TrackNr, Title, Length, Autore, Cantante, Strum, Esecutore ) " & _
                    "SELECT '" & strValue1 & "' As CatalogueNr, '" & strValue2 &
"' as Univoco, TrackNr, Title, Length, Autore, Cantante, Strum, Esecutore" & _
                    "FROM [Tbl_Audio_PRINCIPALETRACK] WHERE Univoco = " &
Me.Univoco & ";"
                DBEngine(0)(0).Execute strSql, dbFailOnError
 -----------------------------------------------
La chiave primaria č un contatore.
Gli altri campi sono
CatalogueNr
Univoco
TrackNr
Title
e cosě via
Catalogue Nr eUnivoco sono testuali e sono ovviamente gli stessi che ho usato
per duplicare il record principale, cioč strvalue1 e strvalue2.
Ma non funziona e mi ritorna un errore (error 2465, field "|" not found).
Dove sbaglio cosě clamorosamente?
Grazie in anticipo per l'aiuto.
Erika

 Dove sbaglio così clamorosamente?
Ciao Erica,
se il campo Univoco è testuale dovrai passarglielo com testuale No ?
----
WHERE Univoco = '" & Me.Univoco & "';"
----
onde prevenire eventuali errori dovuti alla presenza del carattere ' nelle
costanti testuali usa la funzione Replace
----
WHERE Univoco = '" & Replace(Me.Univoco,"'","''") & "';"
----
poi, togli o cambia gli alias Univoco e CatalogueNr presenti nella select,
gli alias in questo caso non servono ma tu li stai usando con gli stessi
nomi dei campi esistenti nella tabella.
nel caso di altri problemi stampa la stringa Sql, ti aiuterà a capire cosa
c'è che non va.
----
Debug.Print strSql
DBEngine(0)(0).Execute strSql, dbFailOnError
----
Ciao
-- 
Giorgio Rancati
[Office Access MVP]

nomi dei campi esistenti nella tabella.
Scusa la mia newbbità ma non ho capito.
E come faccio a dirgli che valore inserire??
All'inizio, nella prima versione del db, usavo una query "esterna" e impostavo
un parametro fittizio come espr1 e poi lo andavo a modificare a mano.
Ma se riesco a passare il paragrafo tranquillamente e far eseguire la prima
parte della query (cioe' il copia/incolla del record principale), perché non
funziona anche con la seconda parte.
Io vorrei che il nuovo record della sottomaschera avesse come CatalogueNr e
Univoco quelli che io ho impostato per il record principale.
Credo che sia qui che sbaglio, ma non cavo un ragno dal buco.
Grazie ancora per l'aiuto (e per la pazienza!!).
Erika

 E come faccio a dirgli che valore inserire??
non č il nome dell'alias che determina dove deve essere memorizzato il dato
ma la sua posizione nella select.
Comunque quest'ultima parte era solo un suggerimento per avere (a mio
parere) una miglior leggibilitŕ della query,  questa parte puoi lasciarla
anche cosě che funziona lo stesso.


anche così che funziona lo stesso.
Cmq ho scoperto che a bloccare l'esecuzione della query era questa riga di
codice:
If Me.[Sfr_Audio_PRINCIPALETRACK].Form.RecordsetClone.RecordCount > 0 Then
Sinceramente non ho ancora capito cosa la confonda!
Il nome della sottomaschera è giusto.
Ma il bello è che ci sono arrivata praticamente per caso: stavo cercando di
usare lo stesso codice in un'altra maschera per rendere visibili/invisibili dei
controlli e assolutamente non veniva "considerato".
Allora sono tornata sull'altra sezione (dove mi ero arresa e avevo piazzato un
bel docmd.openquery e buonanotte), ho tolto quella riga di codice e BINGO,
l'accodamento va che è una meraviglia.
Non so che dire.
Cmq senza i tuoi preziosi suggerimenti sarei ancora lì a cercare di passare un
testo come  numero.
Grazie!
Erika