Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    3

    Visual Basic 6 per Access

    Se ho una tabella di nome Libri con un campo di nome Utenti e una tabella di nome Utenti con un campo di nome Utente, quando inserisco attraverso una maschera un nuovo libro nella tabella Libri con relativo utente che ha preso in prestito il libro come posso fare che Access controlli se l'utente inserito nel campo Utente della tabella Libri è già presente nel campo Utente della tabella Utenti e mi avvisi con una MsgBox?

    Per quel poco che ho capito devo scrivere del codice Visual basic nell'evento "Dopo aggiornamento" del campo Utente della maschere di immissione dati, ma quale?

  2. #2
    Utente di HTML.it L'avatar di fiber81
    Registrato dal
    Oct 2002
    Messaggi
    328
    Secondo me non è una soluzione ottimale, se ho capito l'utente della tab libro corrisponde a quello nella tab utente, no?
    Se è così basta che crei delle relazioni tra le due tabelle.
    Non ti serve creare un modulo in VB

  3. #3
    Il tuo è un problema molto comune. Cmq per dirla tutta dovresti darci il tracciato record delle due tabelle per dare un consiglio migliore .
    Il dubbio non è piacevole, ma la certezza è ridicola. Solo gli imbecilli son sicuri di ciò che dicono.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    3
    Database Libri e utenti

    La tabella Libri ha questa struttura:

    Campo Tipo

    Chiave primaria IdLibro Contatore
    Titolo Testo
    Autore Testo
    IDArgomento Testo
    Data del prestito Data/ora
    Utente Testo
    Note Testo

    La tabella Utenti ha questa struttura:

    Campo Tipo

    Chiave primaria Utente Testo
    Età Testo
    Sesso Testo

    Ho stabilito una relazione uno-a-molti tra la tab. Utenti e la tab. Libri (ad un record di Utenti possono corrispondere più record di Libri) attraverso il campo "Utente" di entrambe senza applicare l'integrità referenziale .

    Vorrei che, ogni volta che inserisco un nuovo record in Libri, quando immetto l'utente nel relativo campo Access controllasse se l'utente è già presente nel campo Utente di Utenti e mi avvertisse con una MsgBox.

    Il modo più semplice mi sembra questo: creare una maschera per l'immissione dati in Libri e scrivere del codice Visual Basic (ma non so quale) per l'evento "Dopo aggiornamento" tra le proprietà della casella di testo Utente della maschera.


    Non capisco: quale altra relazione dovrei stabilire tra le due tabelle?

  5. #5
    applica l'integrità referenziale cosi' access non ti fa inserire record nella tabella "libri" se non corrisponde un nome utente nella tabella utenti. Comunque sarebbe meglio se la relazione tra le due tabelle si basasse su due ID Utente (quello nella tabLibri di tipo Numerico e quello nella tabUtenti come chiave primaria - contatore, aggiungi poi un campo nome-testo nella tabUtenti)poi puoi vedere il nome dell'utente legato al suo ID in una maschera di inserimento dati.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    3
    Io insisto nella mia idea.
    Io devo inserire anche libri presi da utenti che non sono già inseriti nella tabella Utenti.

    Ho scritto questo codice per l'evento "Dopo aggiornamento" nel campo Utente della maschera di immissione dati per la tabella Libri.
    Purtroppo la MsgBox "Utente già inserito" mi compare anche per utenti che non sono nella tabella Utenti.
    Qualcuno sa dirmi perché?


    Option Compare Database

    Private Sub Utente_AfterUpdate()

    Dim dbs As Database
    Dim tab_Libri As Recordset
    Dim tab_Utenti As Recordset
    Dim CampoUtenteLibri As Field
    Dim CampoUtenteUtenti As Field
    Dim UtenteRicercato As Variant
    Dim UtenteDaConfrontare As Variant

    Set dbs = OpenDatabase("C:\Documents and Settings\Nathan Gori\Documenti\Database\Libri e Utenti 2002.mdb")

    Set tab_Libri = dbs.OpenRecordset("Libri")
    Set tab_Utenti = dbs.OpenRecordset("Utenti")

    Set CampoUtenteLibri = tab_Libri.Fields("Utente")
    Set CampoUtenteUtenti = tab_Utenti.Fields("Utente")


    UtenteRicercato = CampoUtenteLibri.Value



    While (Not tab_Utenti.EOF)
    UtenteDaConfrontare = CampoUtenteUtenti.Value
    If UtenteRicercato = UtenteDaConfrontare Then
    MsgBox "Utente già inserito"
    End
    Else
    tab_Utenti.MoveNext
    End If
    Wend




    End Sub

  7. #7
    Non iscritto/a
    Registrato dal
    May 2002
    Messaggi
    325

    Re: Visual Basic 6 per Access

    [supersaibal]Originariamente inviato da forxyu
    Se ho una tabella di nome Libri con un campo di nome Utenti e una tabella di nome Utenti con un campo di nome Utente, quando inserisco attraverso una maschera un nuovo libro nella tabella Libri con relativo utente che ha preso in prestito il libro come posso fare che Access controlli se l'utente inserito nel campo Utente della tabella Libri è già presente nel campo Utente della tabella Utenti e mi avvisi con una MsgBox?

    Per quel poco che ho capito devo scrivere del codice Visual basic nell'evento "Dopo aggiornamento" del campo Utente della maschere di immissione dati, ma quale? [/supersaibal]
    Crea una query in modo da avere riunite la tabella Utenti e la tabella prestiti. in vb non farai altro che connetterti alla query
    e creare sulla stessa un controllo campi. Se il campo prestito è diverso da vuoto fai apparire un msgbox che indica il numero di libri
    presi in prestito.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.