Se istruzione che controlla la tabella dati esistente<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />CIAO,
Sto cercando di creare un'istruzione if che controlli se esiste o meno uno specifico (il nome della tabella è noto). Se la tabella esiste, dovrebbe essere aggiunta a un giornale. Il mio codice è il seguente:
//assegna la tabella a una variabile.
Tabella dati ( "Ber" ) << Sottoinsieme ( Invisibile , ( Righe selezionate ) , Nome della tabella di output ( "Produzione" ) ) ;
NC1 = Tabella dati ( " Produzione " ) ;
......
//Controlla se le tabelle esistono
Se ( Tentativo ( Tabella dati ( " Produzione " ) , TabellaEsist = 0 ) ,
NC1 << rivista
,
jrn << Aggiungere ( Casella di testo ( "Alla neg. prover har ett värde under 0.2" )) ;
) ;
Ho anche provato con quanto segue:
Se ( Tentativo ( NC1, TabellaEsist = 0 ) ,
NC1 << rivista
,
jrn << Aggiungere ( Casella di testo ( "Alla neg. prover har ett värde under 0.2" )) ;
) ;
Risultati:
Anche se la tabella esiste (non si verificano errori durante l'esecuzione dello script), la tabella non viene accodata.
Se la tabella non esiste, viene aggiunta la casella di testo.
Perché questo non funziona?
Cordiali saluti
Anders
Re: Istruzione If che controlla la tabella dati esistenteL'istruzione IF richiede una condizione che restituisca vero o falso.Per eseguire questa operazione fai affidamento sulla funzione TRY, che non è il suo compito principale, ma restituirà il valore dell'espressione se restituisce.Ma DATA TABLE("Output") fornisce un riferimento a una tabella di dati, non fornisce una risposta vero/falso.In particolare non dà la risposta vera e quindi l'espressione IF non viene mai valutata.
Re: Istruzione If che controlla la tabella dati esistenteUtilizzo una funzione per questo.Una volta caricata la funzione, chiamala semplicemente in questo modo:
Se (tabella_esiste( "Produzione" ) ,
// aggiungi al diario
,
// non aggiungere
) ;
Ecco la funzione:
/*
Nome della funzione: tabella_esiste
Descrizione: Restituisce 1 se la tabella esiste, 0 in caso contrario
Argomenti:
table_name Tabella di cui verificare l'esistenza
*/
tabella_esiste = Funzione ( { nome_tabella } ,
{ Locale predefinito } ,
tbl_exists_flag = 0 ;
// Passa in rassegna tutte le tabelle e verifica se questa esiste
num_tabelle = ntable () ;
Per ( io = 1 , io <= num_tabelle , io ++,
un_nome = Tabella dati ( io ) << Ottieni nome ;
Se ( un_nome == nome_tabella ,
tbl_exists_flag = 1 ;
rottura () ; // salta fuori dal giro ora che abbiamo trovato la tabella
) ;
) ;
tbl_exists_flag ;
) ; // termina la funzione table_exists
Re: Istruzione If che controlla la tabella dati esistentefunziona a meraviglia, grazie per il tuo aiuto.
Posso chiederti perché non funziona quando faccio un'affermazione combinata di If e try? Mi sembra che JMP conduca le operazioni (non viene generato alcun errore) ma non conduca tutta l'istruzione.
Cordiali saluti
Anders
Re: Istruzione If che controlla la tabella dati esistenteQuesto dovrebbe aiutarti:
//Controlla se le tabelle esistono
Tentativo (
Tabella dati ( "Produzione" ) ;
tabellaEsist = 1
,
tabellaEsist = 0
) ;
Se ( tabellaEsist ,
spettacolo ( "esiste" )
,
spettacolo ( "non esiste" )
) ;