2011-03-06 16 views
0

私はここで何をしようとしているのか分かりませんが、基本的にレコードがデータベースに存在するかどうかを確認する必要があるので、関数を呼び出してsqlrunnerクラスを使用しています。クエリの結果はイベントレスポンスとして呼び出され、結果の関数からその値を親に返す方法を知らない。 私は後方に物事をする必要がありますように感じるか何か...他の場所このsqlrunner関数からブール型の戻り値を取得する方法は?

 public function dbmatch(datetime:String, typecode:String):Boolean { 
      var q:String = "SELECT DateTime FROM Event WHERE DateTime='"+datetime+"' AND EventTypeCode='"+typecode+"'" 
      SQLService.getInstance().execute(q,null,matchresult); 
      function matchresult(result:SQLResult):Boolean{ 
       var match:String = result.data[0]; 
       if (match == null){return false} else {return true} 
      } 
      return matchresult(); 
     } 

:基本的に問題はSQLServiceクラスはすぐにクエリの結果を返すことができないということです

var recordexists:Boolean = dbmatch(datetime, "Gb"); 

if (!recordexists){...} 
+0

?常に真実に戻っていますか? –

+0

@EyeSeeEm私がそこに持っているのは、返り値の形式のmatchresultを実際に引き出すわけではありません。引数が必要ですが、それを置く方法はわかりません。主な問題は、matchresultが最初にイベントリスナーによって呼び出され、戻り値がどこにあるのかわからないことです。 – Damon

+0

ああ、そうです。次に、プログラムの流れを変更する必要があると思います。結果は即座に返すことができないので、完了するまで待つ(つまり聴く)必要があり、実行を続行する必要があります。必要があれば、私は試してみることができますが、私はあなたのケースではうまくいかないとは思っていますが、事柄を明確にするのに役立ちます。 –

答えて

1

。そのため、コールバックリスナー関数(あなたの例ではmatchresult)を使用して、検索が終了した後にプログラムに通知します。

これを処理する基本的な方法は、クエリを呼び出してから、リスニング関数に「コールバック」するまで待ってから実行を続けることです。他の場所で

public function dbmatch(datetime:String, typecode:String, callbackListener:Function):void { 
    var q:String = "SELECT DateTime FROM Event WHERE DateTime='"+datetime+"' AND EventTypeCode='"+typecode+"'" 
    SQLService.getInstance().execute(q, null, callbackListener); 
} 

まさに問題とは何
// Start the query, but can't react to it immediatly   
    dbmatch(datetime, "Gb", onSQLQueryResult); 

    // Your callback function 
    public function onSQLQueryResult(result:SQLResult):void { 
     var match:String = result.data[0]; 
     if (match == null) { 
      // Do stuff you were going to do at (!recordexists) 
     } 
    } 
+0

コールバック関数は新しく..これはそれのようですしかし、コールバック関数は呼び出されていません。 – Damon

+0

'3590:ブール値が期待されていた場所で使用されるvoid式はブール型に変換されます。 'dbmatch(datetime、 "GB" .. line – Damon

+0

@damon dbmatch関数の戻り値の型をvoidに変更しましたか?または関数の戻り値をrecordexists変数に代入しようとしていますか? –

関連する問題