Error di rur time 424 Necessario oggetto

di il
5 risposte

Error di rur time 424 Necessario oggetto

Salve a tutti, scusate in anticipo se essendo nuovo sto facendo degli errori nell'utilizzo di questo forum...ringrazio in anticipo chi mi potrà dare una dritta
Cerco di spiegare il problema...

Ho due tabelle:
Sistematicamediterranea
Collezionemediterranea

Le due tabelle hanno in comune i seguenti campi:
specie (tipo carattere)
codicesistematico1 (tipo carattere)
codicesistematico2 (tipo intero)

Ho costruito una maschera per inserire nuovi record nella seconda tabella (Collezionemediterranea).

Il mio obiettivo è, dopo aver riempito con un nome il campo specie nella maschera, riempire automaticamente i campi "codicesistematico1" e "codicesistematico2" copiandone i valori dalla tabella "sistematicamediterranea" per il record corrispondente al campo specie appena inserito nella maschera.

Ho scritto il seguente codice da far partire dopo l'inserimento del campo specie (after update).

Ottengo però il msg di errore che riporto nel titolo, ed il codice si interrompe alla linea che sottolineo sotto:

Private Sub Specie_AfterUpdate()
'Crea variabili per contenere Codice 1 e Codice 2

Dim sSpecie As String
Dim sCod1 As String
Dim sCod2 As Integer

' Assegna il nome della Specie alla variabile sSpecie

sSpecie = Forms!Collezionemediterranea.Specie

Dim MioSQL As String, MiaOrigineRecord As String

' Inizializza l'istruzione SELECT.
MioSQL = "SELECT * FROM [Sistematicamediterranea] WHERE [Specie]=sSpecie"


' Crea l'istruzione SELECT.
MiaOrigineRecord = MioSQL
sCod1 = Table!Sistematicamediterranea.Codicesistematico1
sCod2 = Table!Sistematicamediterranea.Codicesistematico2

Forms!Collezionemediterranea.Cod1 = sCod1
Forms!Collezionemediterranea.Cod2 = sCod2


End Sub

5 Risposte

  • Re: Error di rur time 424 Necessario oggetto

    Carinaria ha scritto:


    Ho due tabelle:
    Sistematicamediterranea
    Collezionemediterranea

    Le due tabelle hanno in comune i seguenti campi:
    specie (tipo carattere)
    codicesistematico1 (tipo carattere)
    codicesistematico2 (tipo intero)
    I nomi delle tabelle dovrebbero essere generalmente al PLURALE...particolare da non trascurare ai fini della logica relazionale.
    In Access non esiste il tipo "carattere", ma (se intendo bene) "testo breve". Tipo "intero" significherebbe "numerico"--->Intero.
    Due tabelle non devono avere molti campi in comune, al massimo uno solo che sarebbe "chiave primaria"---->"chiave esterna", con ovvia relazione uno-a-molti a seguire. La chiave esterna serve a riepilogare in un campo solo tutto quello che viene raccontato nella tabella "madre".

    Conseguenza di tutto ciò, non ti serve un codice per riportare i valori da una tabella all'altra, ma se correttamente correlate, basta una query con tutti i campi di entrambe le tabelle che mostrino i valori da te richiesti.
  • Re: Error di rur time 424 Necessario oggetto

    Salve,
    Se siamo alle prime armi sono urgenti delle raccomandazioni, mi è venuto il torcicollo a leggere i tuoi nomi di campo e oggetti.
    I nomi servono a chi programma per individuare gli oggetti e i campi oltre che sinteticamente in modo sistematico ti spiego con un esempio
    i tuoi:
    Sistematicamediterranea
    Collezionemediterranea
    io li avrei nominati così:
    TbMedSist
    TbMedColl
    questi nomi mi consentono di individuare tambur battente e ovunque li legga che sono i nomi di due tabelle, inoltre ho messo prima la caratteristica comune alle due Tabelle e dopo la specie. Quindi per gli oggetti io uso queste desinenze:
    Tb per le tabelle
    Mk per le maschere
    Rp per i report
    seguono:
    Cc per le CaselleCombinate etc...
    inoltre atteso che tra i nomi non vanno lasciati spazi consiglio di iniziare la parola con una maiuscola quindi:
    TbMedSist e non Tbmedsist men che meno TBMEDSIST.
    Mi sono dilungato nella spiegazione, perchè è ora che vanno assimilati questi concetti di base e perchè servano ad altri.
    Per il resto mi sfugge il senso della domanda tuttavia faccio osservare:
    Il mio obiettivo è, dopo aver riempito con un nome il campo specie nella maschera, riempire automaticamente i campi "codicesistematico1" e "codicesistematico2" copiandone i valori dalla tabella "sistematicamediterranea" per il record corrispondente al campo specie appena inserito nella maschera.
    Il campo lo troviamo nella tabelle nelle maschere invece c'è il controllo che trae origine dal campo!
    Non si copiano i valori dalla tabella alla maschera visto che quest'ultima è l'interfaccia di ciò che è residente nelle tabelle, manipolato attraverso le query poichè non bisogna MAI dare libero accesso alle tabelle all'utente finale.
    Ergo essendo questo un forum tecnico è propedeutico si parli la stessa lingua, pensa che io, non particolarmente avvezzo all'inglese ormai saluto con un .
  • Re: Error di rur time 424 Necessario oggetto

    Suggerisco di seguire come linea una convenzione più internazionale ed usata da molti sviluppatori per l'identificazione degli oggetti:

    http://www.databasedev.co.uk/naming_conv.htm

    Tuttavia io distinguo gli oggetti associati da quelli non associati... vale a dire che glimoggetti associati a campi li lascio nominati come i campi di origine a prescindere dal tipo, questo per motivi di comodità quando si usano cicli su fields... che semplificano il ciclo sugli oggetti omonimi che invece appartengono a Controls...
    In questo modo Me.Contros(fls.name) punta al controllo Bound.
    Ma è una cosa personale solo per spiegare che ci sono giustamente varianti.
    L'importante è avere una regola.
  • Re: Error di rur time 424 Necessario oggetto

    Grazie per i suggerimenti generali che mi avete dato, li utilizzerò.

    Andando al mio problema provo a spiegarlo meglio...

    Io sto usando una maschera per inserire nuovi dati nella tabella corrispondente e vorrei che una volta riempito con un testo il campo "specie" i due campi successivi (codicesistematico1 e codicesistematico2) venissero automaticamente riempiti leggendoli da un'altra tabella. Le due tabelle hanno una chiave unica in comune che cioè proprio il campo "specie". In soldoni ad uno ed un solo valore di "specie" corrispondono un solo valore del codicesistematico1 e codicesistematico2.

    Il codice che ho allegato serviva a questo scopo e lo faceva egregiamente nella versione precedente di Access 2007, invece con la versione 2016 non funziona e mi da l'errore dii run time 424.

    Spero di aver dato ulteriori informazioni utili

    Grazie comunque a coloro che mi hanno risposto fino adesso
  • Re: Error di rur time 424 Necessario oggetto

    Riepilogo tutto a parole mie (altrimenti non riesco a venirne a capo)
    Sistematicamediterranea = tabella madre
    Collezionemediterranea = tabella figlia
    Specie è il campo chiave di entrambe
    codicesistematico1 e codicesistematico2 sono campi in Sistematicamediterranea.
    La tua maschera poggia su Collezionemediterranea e quando selezioni Specie vuoi vedere "da qualche parte" scritti codicesistematico1 e codicesistematico2.

    1. Nella maschera Collezionemediterranea (visualizzazione struttura), il campo Specie deve essere una casella combinata così organizzata:
    Origine riga: punta il mouse all'estrema destra dove ci sono 3 puntini e cliccaci sopra. Apparirà una finestra visualizzazione struttura query. Importa la tabella Sistematicamediterranea e trascina nella griglia sottostante nell'ordine i campi Specie, codicesistematico1, codicesistematico2.
    2. Numero colonne: 3
    3. Rimanendo in visualizzazione struttura maschera, aggiungi 2 "caselle di testo" non associate ad alcun campo.
    4. In ognuna di esse ci scriverai dentro corrispondentemente:
    =[Specie].Column(1)
    =[Specie].Column(2)
    5. Salva tutto
Devi accedere o registrarti per scrivere nel forum
5 risposte