Autore Topic: richiamo sub  (Letto 854 volte)

g.paolo

  • Visitatore
richiamo sub
« il: 19 Febbraio 2008, 11:53:31 »
Se nel mio form di avvio metto il richiamo ad una SUB che mi apre un database, ma la SUB non si trova all'interno della classe del form, mi ritorna un errore, anche se la medesima dichiarata PUBLIC si trova in un modulo chiamato "funzioni"

'SUB nella classe di avvio del form
PUBLIC connessione AS Connection
PUBLIC SUB Form_Open()
  apre_database  'SUB esistente non modulo funzioni
END

'SUB nel modulo "funzioni"
PUBLIC SUB apre_database()
  connessione = NEW Connection
  WITH connessione
    .Type = "sqlite3"
    .Name = "/media/dati_linux/programmazione/gambas/località_pat.kexi"
    .Open
  END WITH
END

Come mai la cosa non funziona in modo simile al VB? Grazie.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: richiamo sub
« Risposta #1 il: 19 Febbraio 2008, 12:24:06 »
Citazione

darth14n ha scritto:
Se nel mio form di avvio metto il richiamo ad una SUB che mi apre un database, ma la SUB non si trova all'interno della classe del form, mi ritorna un errore, anche se la medesima dichiarata PUBLIC si trova in un modulo chiamato "funzioni"

'SUB nella classe di avvio del form
PUBLIC connessione AS Connection
PUBLIC SUB Form_Open()
  apre_database  'SUB esistente non modulo funzioni
END

'SUB nel modulo "funzioni"
PUBLIC SUB apre_database()
  connessione = NEW Connection
  WITH connessione
    .Type = "sqlite3"
    .Name = "/media/dati_linux/programmazione/gambas/località_pat.kexi"
    .Open
  END WITH
END

Come mai la cosa non funziona in modo simile al VB? Grazie.


Se hai dichiarato "connessione" nella form d'avvio, per richiamarla nella SUB
nel modulo "funzioni" devi chiamarla Form_avvio.connessione.

Comunque, in futuro, sarebbe meglio che postassi anche il messaggio d'errore che scrive Gambas. Sarà più facile per gli altri utenti aiutarti. :-)
Ciao.

g.paolo

  • Visitatore
Re: richiamo sub
« Risposta #2 il: 19 Febbraio 2008, 12:40:22 »
Ringrazio per il tuo suggerimento, stava proprio lì il problema. Questo è un comportamento diverso dal VB ma direi che tutto sommato non è male perchè in tal modo il codice risulta più leggibile visto che la routine viene richiamata con il nome del modulo che la contiene.
Per il futuro ricorderò il tuo suggerimento, e riporterò il codice d'errore.