Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560

    [VB + Access] Inserire un record in una tabella principale e in due secondarie

    Salve a tutti,
    vorrei avere qualche chiarimento o meglio il metodo migliore per inserire nuovi record in alcune tabelle collegate ad una tabella principale.
    Allora mi spiego, ho una maschera di inserimento dati che contiene i dati anagrafici di persone (tabella "utenti") e due ListView in cui poter aggiungere record a piacimento di due sotto-tabelle ("eventi" e "luoghi") collegate alla tabella "utenti" con l'ID del record dell'utente selezionato. Ecco la struttura semplificata:

    UTENTI
    id (contatore)
    nome
    cognome

    EVETI
    id (contatore)
    idevento
    descr

    LUOGHI
    id (contatore)
    idevento
    descr

    Durante la modifica di una scheda utente non ho nessun problema in quanto io conosco l'ID utente. Il problema e le mie perplessità nascono nel momento in cui si deve inserire un nuovo utente e contemporaneamente inserire anche gli eventi e i luoghi. Come faccio a fare l'INSERT nelle due sotto-tabelle ed inserire l'idevento se ancora non ho creato il record nella tabella UTENTI?
    Mi rispondo da solo: creo nella tabella utenti un record appena si apre e poi in caso non venga confermato l'inserimento lo cancello. Bene però a questo punto mi sono trovato davanti ad un altro dilemma.
    Facendo l'INSERT ("INSERT INTO utenti (Nome) VALUES ('pippo')") il DB mi crea il record con il nuovo ID ma io non lo conosco! Come faccio? Ho pensato di inserire nel campo Nome ad esempio una stringa identificabile tipo "pippo9.55.34" ovvero con l'orario per distinguerla da altri record inseriti da altri utenti nel momento stesso.
    A me sembra però una soluzione arrangiata... voi come fareste?
    Qual'è il metodo universalmente consigliato e accettato?

    Spero di essere stato abbastanza chiaro
    Grazie un bel po'

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Ti riferisci a VBA di Access oppure a VB6?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    A VB6 ma il discorso penso sia valido anche in VB.NET... o no? :master:

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quando fai l'INSERT dell'utente, subito dopo fai una SELECT per ottenere il nuovo ID che ottieni con

    SELECT @@IDENTITY AS ID

    Con questo fai le altre INSERT.

    Ovviamente, tutto in una transazione

    Inizio transazione
    INSERT ...
    SELECT @@ ...
    INSERT ...
    INSERT ...
    Fine transazione (commit se tutto ok, rollback se c'e' stato un errore ...)

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da ghini76
    A VB6 ma il discorso penso sia valido anche in VB.NET... o no? :master:
    Beh, insomma, tu quale usi?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    In questo caso uso il VB6 ma intendevo dire che per altri lavori uso il VB.NET e mi si potrebbe presentare la stessa esigenza...

    Grazie Oregon, sospettavo che dovessi usare le transazioni... ma "@@IDENTITY" funziona con qualsiasi DB? Per dire, lo posso usare sia su Access, su Oracle, su MySQL o su SQL Server?

    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.