Istruzione If che controlla la tabella di dati esistente<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao,
Sto cercando di creare un'istruzione if che controlla se esiste o meno uno specifico (il nome della tabella è noto). Se la tabella esiste, deve essere aggiunta a un giornale di registrazione. Il mio codice è il seguente:
//assegna la tabella a una variabile.
Tabella dati ( "Ber" ) << Sottoinsieme ( Invisibile , ( Righe selezionate ) , Nome tabella di output ( "Produzione" ) ) ;
NC1 = Tabella dati ( " Produzione " ) ;
......
//Verifica se le tabelle esistono
Se ( Tentativo ( Tabella dati ( " Produzione " ) , TableExist = 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, TableExist = 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 aggiunta.
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 di dati esistenteL'istruzione IF richiede una condizione che restituisca true o false.Ti stai affidando alla funzione TRY per eseguire questa operazione, che non è la sua attività principale, ma restituirà il valore dell'espressione se valuta.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 di dati esistenteUso una funzione per questo.Dopo aver caricato la funzione, chiamala semplicemente in questo modo:
Se (table_exists( "Produzione" ) ,
// aggiungi al diario
,
// non aggiungere
) ;
Ecco la funzione:
/*
Nome funzione: table_exists
Descrizione: restituisce 1 se la tabella esiste, 0 in caso contrario
Argomenti:
nome_tabella Tabella di cui verificare l'esistenza
*/
table_exists = Funzione ( { nome_tabella } ,
{ Locale predefinito } ,
tbl_exists_flag = 0 ;
// Passa in rassegna tutte le tabelle e verifica se questa esiste
num_tabelle = tavola () ;
Per ( io = 1 , io <= num_tabelle , io ++,
un_nome = Tabella dati ( io ) << Ottieni nome ;
Se ( un_nome == nome_tabella ,
tbl_exists_flag = 1 ;
rompere () ; // salta fuori dal ciclo ora che abbiamo trovato la tabella
) ;
) ;
tbl_exists_flag ;
) ; // funzione end table_exists
Re: Istruzione If che controlla la tabella di dati esistentefunziona come un incantesimo, grazie per il tuo aiuto.
Posso chiedere perché non funziona quando faccio una dichiarazione combinata di If e provo? Mi sembra che JMP conduca le operazioni (non viene generato alcun errore) ma non ha condotto tutta l'istruzione.
Cordiali saluti
Anders
Re: Istruzione If che controlla la tabella di dati esistenteQuesto dovrebbe aiutarti:
//Verifica se le tabelle esistono
Provare (
Tabella dati ( "Produzione" ) ;
tableExist = 1
,
tableExist = 0
) ;
Se ( tableExist ,
mostrare ( "esiste" )
,
mostrare ( "non esiste" )
) ;