Errore "Il metodo o un membro dati a cui si è tentato di accedere non è stato trovato. "

di il
6 risposte

Errore "Il metodo o un membro dati a cui si è tentato di accedere non è stato trovato. "

Ciao,
Ho due tabelle Studenti e Voti. Ho creato una form con delle textbox dove posso inserire dei valori per riempire la tabella Voti, selezionando lo studente con una texbox dove scrivo il nome e cognome.
Studenti: ID_Studenti
Nome
Cognome
Data _nascita

Voti: ID_Voti
ID_Studenti
Voto

Voglio fare una select dell'ID Studenti, inserendo da textbox il nome e cognome
Dim id_studente As DAO.Recordset
   Set id_studente = CurrentDb.OpenRecordset(" SELECT ID_Studenti FROM Studenti WHERE (([Nome] = '" & Me.txt_Nome & "') AND ([Data_nascita] = '" & Me.txt_Data_nascita & "') AND ([Cognome] = '" & Me.txt_Cognome& "')) ")
Poi lo passo all'insert
 CurrentDb.Execute " INSERT INTO [Voti] ( ID_Studenti, Voto ) VALUES ('" & id_studente.Fields(0) & "',  '" & Me.txt_Voto & "'')"
 
Quando però inserisco i valori mi da il sequente errore "Il metodo o un membro dati a cui si è tentato di accedere non è stato trovato. " , indicandomi Me.txt_Nome. Ho controllato però e il nome dato alla textbox è giusto.
Dove sbaglio?
Grazie

6 Risposte

  • Re: Errore "Il metodo o un membro dati a cui si è tentato di accedere non è stato trovato. "

    meme'1992 ha scritto:


    Ho due tabelle Studenti e Voti. Ho creato una form con delle textbox dove posso inserire dei valori per riempire la tabella Voti, selezionando lo studente con una texbox dove scrivo il nome e cognome.
    Non capisco. Perché non usi una classica maschera/sottomaschera Studenti/Voti?

    Ti consiglio di nominare i campi sempre al SINGOLARE, quindi direi IDStudente (o ID_Studente), IDVoto (o ID_Voto).
  • Re: Errore "Il metodo o un membro dati a cui si è tentato di accedere non è stato trovato. "

    Grazie per il conssiglio del singolare! Lo userò sicuramente!
    Per la maschera/sottomaschera, questo è un esercizio e deve essere per forza svolto utilizzando visual basic e in questo modo
  • Re: Errore "Il metodo o un membro dati a cui si è tentato di accedere non è stato trovato. "

    meme'1992 ha scritto:


    Per la maschera/sottomaschera, questo è un esercizio e deve essere per forza svolto utilizzando visual basic e in questo modo
    D'accordo sul visual basic, ma (almeno io) non lo penserei così. Potrei sbagliarmi nella comprensione del tuo problema, ma io farei così:
    1. maschera/sottomaschera Studenti/Voti
    2. Sulla maschera Studenti aggiungerei una casella combinata che guarda/punta sul tuo IDStudente. Se organizzi bene la 2a colonna della casella combinata in modo che compaiano Cognome & Nome "uniti", puoi sfruttare anche una procedura guidata che ti consente di selezionare/raggiungere il corrispondente IDStudente. Leggi qui per esempio
  • Re: Errore "Il metodo o un membro dati a cui si è tentato di accedere non è stato trovato. "

    meme'1992 ha scritto:


    Grazie per il conssiglio del singolare! Lo userò sicuramente!
    Per la maschera/sottomaschera, questo è un esercizio e deve essere per forza svolto utilizzando visual basic e in questo modo
    La Select come la fai non serve a nulla... anzi è proprio il modo per dimostrare che non hai capito come funzionano le relazioni.
    L'identificazione dello studente avviene per chiave primaria non per Nome o cognome.... che poi possano coincidere è un dettaglio valido solo se non hai 2 omonimi e non dire che non ne hai...
    Quindi la selezione dello studente deve avvenire in modo diverso ovvero selezionando proprio quello che devi individuare e ricavare la PK.
    La.selezione si fa in diversi modi, il più semplice è usare una Combobox.
    Non è questione di farlo da codice ma di farlo bene.

    IdStudente immagino sia un campo Counter... tu invece nella INSERT lo formatti come Testo.... così come formato.come testo il voto ed ovviamente è Numerico si tipo Precisione Singola va bene...

    Sei certo di aver capito bene le cose...?
  • Re: Errore "Il metodo o un membro dati a cui si è tentato di accedere non è stato trovato. "

    Grazie per le risposte!
    In un altro esempio simile per l'insert, selezionando l'id con Select e textbox e .Fields(0) funzionava!
    Tralasciando un attimo l'insert, non capisco perchè il select sia sbagliato. In fondo voglio solo selezionare un id (capisco e sono d'accordo con voi che esistono metodi sicuramente migliori ma io devo svolgerlo in questo modo =) )

    Di sintassi mi sembra giusto!

    SELECT ID_Studenti FROM Studenti WHERE (([Nome] = '" & Me.txt_Nome & "') AND ([Data_nascita] = '" & Me.txt_Data_nascita & "') AND ([Cognome] = '" & Me.txt_Cognome& "'
  • Re: Errore "Il metodo o un membro dati a cui si è tentato di accedere non è stato trovato. "

    meme'1992 ha scritto:


    Grazie per le risposte!
    In un altro esempio simile per l'insert, selezionando l'id con Select e textbox e .Fields(0) funzionava!
    Queste frasi non servono a nulla, quel codice se il Campo è Numerico NON PUO' funzionare, la sintassi per le differenti tipologie di Tipo di Campo in tabella è fissa, quindi se vuoi che parliamo di qualche cosa, posta l'altro codice che funzionava e indica il tipo di Campi che sono riferiti in Tabella... altrimenti aria fritta.

    meme'1992 ha scritto:


    Tralasciando un attimo l'insert, non capisco perchè il select sia sbagliato. In fondo voglio solo selezionare un id (capisco e sono d'accordo con voi che esistono metodi sicuramente migliori ma io devo svolgerlo in questo modo =) )

    Di sintassi mi sembra giusto!

    SELECT ID_Studenti FROM Studenti WHERE (([Nome] = '" & Me.txt_Nome & "') AND ([Data_nascita] = '" & Me.txt_Data_nascita & "') AND ([Cognome] = '" & Me.txt_Cognome& "'
    La sintassti NON E' affatto giusta, il campo Data, come i campi Numerici e Testo, ha una sintassi differente, e non è quella, ma il concetto che non hai compreso è che in un sistema di Gestione, l'evoluzione di quello che stai facendo, la selezione di una Anagrafica Esistente, si fa selezionando da un elenco proprio per evitare errori e per essere certi di SELEZIONARE quello che si vuole, negli elenchi infatti, siano ComboBox o ListBox, il campo associato è sempre la PK della Tabella di Riferimento, e questo è il modo corretto...
    La SELECT poi scritta così NON fa nulla, devi aprire un Recordset basato su quella Query ed estrarre il valore, a quel punto inesperienza per inesperienza usa DlookUp(.... F1...)

    Capisco che sentirsi dire che si sta sbagliando è fastidioso, ma per mettere in discussione un suggerimento tecnico, è indispensabile avere un adeguato livello tecnico altrimenti ti si suggerisce una cosa e si deve anche convincerti che tu sbagli... proprio NO.
Devi accedere o registrarti per scrivere nel forum
6 risposte