Newsgroup: it.comp.appl.access
Titolo: maschera, controlli e query

Salve a tutti,
mi trovo nella necessità di dover effettuare una query di accodamento
che mi inserisca dei dati in una tabella. questi dati devono però
essere presi da una maschera, quindi mi chiedo come faccio ad inserire
nella query il riferimento per esempio ad una casella di testo presente
nella maschera?
In pratica supponendo, che la maschera registri i dati contenuti nelle
caselle di testo in variabili di memoria, come indico tali variabili
nella query di accodamento?
Spero di essere stato chiaro, grazie a tutti coloro che vorranno
aiutarmi!

 aiutarmi!
La struttura da usare è questa se vuoi mettere i valori singoli:
INSERT INTO destinazione [(campo1[, campo2[, ...]])]
VALUES (Forms!NomeForm!Campo1[, Forms!NomeForm!Campo2[, ...])
Altrimenti se hai modo di recuperare la ChiavePrimaria usa questa:
INSERT INTO destinazione [(campo1[, campo2[, ...]])] [IN
databaseesterno]
SELECT [origine.]campo1[, campo2[, ...]
FROM espressionetabella
WHERE CampoChiave=Forms!NomeForm!NomeCampo
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ciao Alex, grazie per l'interessamento!
Ti spiego meglio qualìè il mio problema.
Ho creato questa maschera e non l'ho associata ad alcuna tabella perche
tramite essa devo inserire dei record in una tabella prendendo però
dei campi da diverse tabelle.
E' per questo che ho pensato ad una query di accodamento che mi
inserisca questi campi nella tabella in questione. Il mio problema è
che, una volta creata la query ed associato ad essa un pulsante di
comando, apro la maschera, inserisco i dati, clicco sul pulsante ed a
questo punto mi escono delle maschere di inserimento dei miei dati,
cosa che io non voglio perchè la maschera che voglio realizzare deve
eseguire direttamente la query ed inserire i dati nella tabella
prendendoli dai controlli presenti nella maschera stessa.
E' questo il mio problema, far inserire direttamente i dati dalla
maschera, evitando che il programma mi chieda di inserire manualmente
tali controlli.

 tali controlli.
Il 1° metodo che ti ho suggerito fà esattamente questo anche
se lo puoi fare benissimo con un Recordset che diverrebbe più
comodo se attribuissi il nome dei controlli uguale al nome dei
Campi della tabella, con un ciclo For faresti tutto.....!
Prova eventualmente a postare la stringa SQL completa.


Ciao Alex, ti posto la stringa SQL completa. Calcola che i primi due
campi li prendo da altre due query:
INSERT INTO Acquisti ( [Id Fornitore], [Id Prodotto], [Prezzo
acquisto], Quantità, IVA, Data )
SELECT [Fornitori Query].[Id Fornitore], [Prodotti Query1].[Id
Prodotto], Forms!Testo5![Prezzo acquisto] AS Espr3,
Forms!Testo7!Quantità AS Espr4, Forms!Testo9!IVA AS Espr5,
Forms!Testo11!Data AS Espr6
FROM [Fornitori Query], [Prodotti Query1];
e' probabile che ho fatto qualche errore da principiante visto che in
effetti lo sono....grazie tante!

Ho risolto, ma ho un altro problema.
Se vado ad eseguire la query ed inserisco i valori manualmente funziona
mentre dalla maschera non va.
Posto le query in oggetto:
INSERT INTO Acquisti ( [Id Fornitore], [Id Prodotto], [Prezzo
acquisto], Quantità, IVA, Data, Sconto )
SELECT [Fornitori Query].[Id Fornitore] AS Espr1, [Prodotti Query1].[Id
Prodotto], Forms![Inserisci Acquisti2]!Testo5 AS Espr3,
Forms![Inserisci Acquisti2]!Testo7 AS Espr4, Forms![Inserisci
Acquisti2]!Testo9 AS Espr5, Forms![Inserisci Acquisti2]!Testo11 AS
Espr6, Forms![Inserisci Acquisti2]!Testo13 AS Espr7
FROM [Fornitori Query], [Prodotti Query1];
SELECT Fornitori.[Id Fornitore]
FROM Fornitori
WHERE (((Fornitori.[Ragione Sociale])=[Forms]![Inserisci
Acquisti2]![CasellaCombinata3]));
SELECT Prodotti.[Id Prodotto]
FROM Prodotti
WHERE (((Prodotti.Descrizione)=Forms![Inserisci
Acquisti2]!CasellaCombinata0));

 wrote in message
news:1139419912....@g43g2000cwa.googlegroups.com

Il problema è questo, se usi quella struttura ti ingabbi in un
buco nero, inutile.
Se come hai detto la Form inserimento dati
non è associata in quanto solo d'inserimento devi usare
il primo modello che ti ho suggerito:
INSERT INTO Acquisti _
            ([Id Fornitore], _
             [Id Prodotto], _
             [Prezzo], _
             [acquisto], _
             [Quantità], _
             [IVA], _
             [Data], _
             [Sconto] 
VALUES (Forms!NomeForm!Campo1[, Forms!NomeForm!Campo2[, ...])
 
Ora in questo modo sicuramente funziona se inserisci al posto
dei riferimenti ai controlli quelli reali, ma attento al fatto
che devi controllare se i valori sono stati inseriti tutti
altrimenti ti restituisce errore.
Un'altra soluzione è questa:
Come ti dicevo se tutti i controlli contenenti i dati da inserire
hanno lo stesso nome dei campi in cui inserirli puoi fare:
Imposta i riferimenti a DAO dal menù(Strumenti)--->Riferimenti 
della finestra del codice:
Private Sub AddNewRecord()
   Onerror Resume Next
   Dim Rs as DAO.Recordset
   Dim fld as DAO.Field
   Set Rs=CurrentDb.OpenRecordset("NomeTabella",dbOpenTable)
   With Rs
      .AddNew
      For each fld in .Fields 
         If Not IsNull(Me.Controls(fld.Name)) Then _
                 fld=Me.Controls(fld.Name)
      Next
      .Update
   End With
End Sub
Ciao



Ciao Alex, ti ringrazio per la disponibilità.
La mia domanda è questa, come faccio ad utilizzare il modello che mi
suggerisci se devo prendere i primi due valori da altre due query?

 wrote in message
news:1139496812.7...@f14g2000cwb.googlegroups.com

Scusa la tabella in cui inserirla è una sola giusto...?
Bene, se nella tua maschera usassi delle ComboBox con origine
dati da SELECT avresti meno dubbi...!
Di fatto mi pare manchi qualche piccolo passo tecnico.
