Update valori risultati da una query

di il
15 risposte

Update valori risultati da una query

Buongiorno,
Ho riscontrato un problema durante la programmazione di un DB di gestione.
Dovrei modificare alcuni valori della chiave primaria basandomi su una condizione di uguaglianza.
La query è la seguente:
"UPDATE Strutture SET ID = '" & codice & "'WHERE Codice = '" & Me.inCodcie & "'"
dove il codice dovrebbe essere l'ID concatenato con "*".
La modifica viene effettuata solo su un ID.

Ho provato anche a selezionare prima gli ID con un'altra query, ma Dlookup ovviamente restituisce solo un valore.

Come posso fare?

15 Risposte

  • Re: Update valori risultati da una query

    Che significa che vorresti modificare i valori della chiave primaria? Questa cosa mi lascia un po' perplesso.
  • Re: Update valori risultati da una query

    Anche io non capisco
  • Re: Update valori risultati da una query

    La chiave primaria è un testo breve nel mio caso.
    La modifica della chiave mi è utile per discriminare i record attivi e quelli non.
    All'interno della tabella è già presente un campo Attivo, ma nell'eventualità in cui l'utente inserisca un record con lo stesso ID non incorro in errore concatenando l'asterisco.
  • Re: Update valori risultati da una query

    La chiave primaria un testo breve? Secondo me non sai quello che dici?
  • Re: Update valori risultati da una query

    La codifica per identificare il record è stata stabilita in questo modo.
  • Re: Update valori risultati da una query

    Tralasciando il fatto della chiave primaria legata ad un testo breve, cosa intendi per campo attivo?
    Inoltre confronti il testo inserito in un controllo quindi è normale che ti vada a cambiare solo il record con il testo uguale. Se poi hai altre chiavi primarie con lo stesso testo, hai grossi problemi di struttura che non risolverai mai con accrocchi di questo genere.
    Inoltre, l oggetto da cui prendi il valore, è quello che viene usato per un nuovo inserimento, oppure fa parte di una procedura scritta appositamente per cambiare le chiavi duplicate?
    Inoltre anche l uso di un asterisco concatenato non è proprio il massimo.
    Secondo me fai prima a gestire la situazione nel momento dell inserimento.
    Con dlookup individui se esiste la chiave primaria e di conseguenza, o avverti l utente e gli fai inserire una chiave primaria diversa, oppure crei, tramite vba una chiave univoca.
    Anche se sinceramente non riesco proprio a capire la logica di tutto ciò e di come è strutturato il database.
    A volte si usano chiavi primarie testuali, ma per dati che già di per se sono doversi per natura, come ad esempio codici fiscali o carte di identità. Non per dati inseriti a piacere dall utente.
    Io suggerisco una riscrittura delle tabelle.
  • Re: Update valori risultati da una query

    Il concetto FONDAMENTALE e" che una chiave primaria serve per identificare in modo UNIVOCO un record.
    Una volta assegnata al record NON VA CAMBIATA PER NESSUN MOTIVO.
    Il modo corretto per CAMBIARE una chiave primaria e' CREARE un nuovo eecord con la nuova chiave e gli stessi valori negli altri campi del record precedente, E CANCELLARE il record precedente.

    Se non e' stato seguito questo concetto filosofico, sono '...zzi amari!



    In altri termini, qualunque soluzione tu possa adottare VA BENE perche' sono TUTTE SBAGLIATE, con effetti collaterali imprevedibili.

    Sempre se hai utilizzato il termine 'chiave primaria' con cognizione di causa
  • Re: Update valori risultati da una query

    Stai prendendo una strada sbagliata e un po' a caso senza sapere bene quello che fai.
    La chiave non la toccare. Utilizza un campo apposito per indicare quello che vuoi senza particolari problemi.
  • Re: Update valori risultati da una query

    Perfetto, grazie a tutti. Inserirò un campo apposito.
    Se dovessi modificare diversi record (non chiave primaria) basandomi su una condizione di uguaglianza, come posso fare?
    Il problema è simile a quello posto sopra.
    "UPDATE Strutture SET Nome= '" & me.inNome & "'WHERE Codice = '" & Me.inCodice & "'"
    Con questa query ne modifica solo uno.
    Avevo provato anche a selezionare le chiavi primarie per poi modificare il tutto all'interno di un ciclo, ma purtroppo non ho ottenuto risultati.
  • Re: Update valori risultati da una query

    Scusa ma quale criterio vuoi usare per includere più record? Questo lo devi sapere tu.

    Certo è che se usi una WHERE con un campo uguale ad un valore, se quel campo (Codice) è una chiave unica, avrai modificato un solo record (se esiste).

    Stai facendo una domanda al forum per cui solo tu puoi conoscere la risposta.
  • Re: Update valori risultati da una query

    Mi sono spiegato male.
    Ti faccio un esempio: il campo codice è un campo del tipo Salario e la modifica sul nome avviene solo quando il codice ha un certo valore inserito dall'utente. In questa tabella posso avere diversi record con lo stesso salario; come posso modificarli tutti insieme?
  • Re: Update valori risultati da una query

    Il campo Codice è un campo di tipo Salario? Scusa, ma che dici?

    Vuoi lavorare su un campo numerico? Allora nella WHERE inserisci la condizione Salario>1000

    se vuoi modificare tutti quelli oltre 1000.

    Altrimenti non ho capito e dovresti spiegarti in modo più preciso e tecnico (anche perché rispetto a quello che volevi fare prima non si capisce proprio nulla)
  • Re: Update valori risultati da una query

    Non sono intervenuto perchè non ho compreso nulla da capo a piedi. Invito mm12345 a fornire una descrizione chiara (potrebbero esserci problemi di normalizzazione alla base):
    - di cosa parla il database
    - elenca i nomi propri di tutte le tabelle
    - nomi propri di tutti i loro campi
    - le relazioni
    - rispiega tutto usando i nomi propri, anche un esempio pratico può servire a chiarire le idee.

    In alternativa ai punti 2-3-4, puoi allegare una immagine della Finestra Relazioni.
  • Re: Update valori risultati da una query

    Sono riuscito a risolvere il problem.
    La sintassi della query era sbagliata.
    Grazie a tutti
Devi accedere o registrarti per scrivere nel forum
15 risposte