2012-02-23 6 views
0

を照会実行するために入力ダイアログを使用するには、以下のようなSQLクエリを実行するためにinputdlg機能を利用することが可能です:どのようにSQLが

pdbSearchQuery = input('Enter your PDB Code: ', 's'); 
    curs = fetch(exec(conn, ['SELECT * FROM cath_2_wo_dup WHERE pdbcode = ' '''' pdbSearchQuery ''''])); 
    pdbSearchResults = curs.Data 

私はコマンドウィンドウを使用して、デフォルトでこれを行うために管理データベース内の列を検索しますが、ユーザーが上記の変数を使用してデータベースを検索するための値を入力できるダイアログボックスを作成したいと考えています。

それは最後に次のようになります。

Search bar to search for n column from the database table

彼らは「OK」をクリックすると、それが彼らのために表や図を作成する別のスクリプトを実行するには、そのボタンを招きます。

これはinputdlgで行うことができますか、またはこのような方法を実行する別の機能がありますか?

答えて

1

これは絶対に可能であり、コードに自由度を与えるでしょう。たとえば、inputdlgから変更されました。ヘルプ:

prompt = {'Enter table name:','Enter query field:'}; 
dlg_title = 'Input for query'; 
num_lines = 1; 
def = {'mytable','thatProperty'}; 
answer = inputdlg(prompt,dlg_title,num_lines,def); 
curs = fetch(exec(conn, ['SELECT * FROM ' char(answer{1}) ' WHERE ' char(answer{1}) '= ' '''' pdbSearchQuery ''''])); 

正常に動作するはずです。お役に立てれば!

+0

私はいくつかの名前と変数を変更し、データベースから列を取得することができました。しかし、このコードをスクリプトとして実行し、入力フィールドに値を入力して「OK」を押すと、MATLABがクラッシュします。ダイアログウィンドウの後に実行しているスクリプトの数を処理できないことがありますか?私は何も実行しようとしなかった、それはまだクラッシュします。お知らせ下さい。 – Jeiman

+1

@Jeiman、私はそれが 'exec'や' fetch'クラッシュする可能性が高いと思いますが、同時に複数のデータベース接続がありますか?また、「何も実行していない」と言うと、ダイアログボックスの呼び出し後にmスクリプトを実行しないことを意味しますか? – macduff

+0

私の謝罪、私は別のスクリプトが行われる前に私の他のスクリプトをあまりにも早く呼び出す。それは今修正され、適切に動作しています。説明と解決に感謝します。 – Jeiman