2017-06-13 3 views
0

私は逐次的に2つのクエリを実行し、最初と最後のクエリデータを比較し、それに応じてテーブルを描画する必要があります。私は本当にどこが問題であるかを知るのは無駄です。私は、クエリの実行が非同期であることを認識しています。助けてください。Google視覚化クエリを順次実行するにはどうすればよいですか?

//First Query 
     function drawVisualization() { 
      alert(" I am first"); 
      var sqlLastQuarterWeeks = "sql?tq=select MonthName, WeekStart, WeekEnd &sqlQueryID=last_quarter_weeks"; 
      var qryLastQuarterWeeks = new google.visualization.Query(sqlLastQuarterWeeks); 
      qryLastQuarterWeeks.send(handleLastQuarterWeeksSqlQueryResponse); 
     } 
     function handleLastQuarterWeeksSqlQueryResponse(dataQueryLastQuarterWeeksResponse) { 
      if (dataQueryLastQuarterWeeksResponse.isError()) { 
       alert('Error in query: ' + dataQueryLastQuarterWeeksResponse.getMessage() + ' ' + dataQueryLastQuarterWeeksResponse.getDetailedMessage()); 
       return; 
      } 
      gblWeeksInformation = dataQueryLastQuarterWeeksResponse.getDataTable(); 

      drawLastQuarterWeeksAnalysis(); 

      //Second Query 
      function drawLastQuarterWeeksAnalysis() { 
       alert("I am second"); 
       var sqlLastQuarterWeeksAnalysis = "sql?tq=select Project, Passed, Failed, WeekStart, WeekEnd, WeekNumber &sqlQueryID=last_quarter_weeks_analysis"; 
       var qryLastQuarterWeeksAnalysis = new google.visualization.Query(sqlLastQuarterWeeksAnalysis); 
       qryLastQuarterWeeksAnalysis.send(handleLastQuarterWeeksAnalysisSqlQueryResponse); 
      } 

      function handleLastQuarterWeeksAnalysisSqlQueryResponse(dataQueryLastQuarterWeeksAnalysisResponse) { 
       if (dataQueryLastQuarterWeeksAnalysisResponse.isError()) { 
        alert('Error in query: ' + dataQueryLastQuarterWeeksAnalysisResponse.getMessage() + ' ' + dataQueryLastQuarterWeeksAnalysisResponse.getDetailedMessage()); 
        return; 
       } 
       var dtLastQuarterWeeksAnalysis = dataQueryLastQuarterWeeksAnalysisResponse.getDataTable(); 
       alert(dtLastQuarterWeeksAnalysis.getNumberOfRows()); 
       var intNumberOfRows = dtLastQuarterWeeksAnalysis.getNumberOfRows(); 
       var intRowCounter; 
       var tblWeekOverAnalysis = new google.visualization.DataTable(); 
       for (intRowCounter = 0; intRowCounter < WEEKLY_TESTS_TABLE_COLUMNS.length; intRowCounter++) { 
        if (WEEKLY_TESTS_TABLE_COLUMNS[intRowCounter] !== null) { 
         var colDataType = WEEKLY_TESTS_TABLE_COLUMNS[intRowCounter].split(':')[0]; 
         var colDataValue = WEEKLY_TESTS_TABLE_COLUMNS[intRowCounter].split(':')[1]; 
         tblWeekOverAnalysis.addColumn(colDataType, colDataValue); 
        } 
       } 
       var tblWeekOverAnalysisRow = new Array(); 
       for (intRowCounter = 0; intRowCounter < dtLastQuarterWeeksAnalysis.getNumberOfRows() ; intRowCount++) { 
        var strApplicationName = dtLastQuarterWeeksAnalysis.getValue(intRowCounter, 0); 
        tblWeekOverAnalysisRow[intRowCounter] = strApplicationName; 
        var strTestRunDates = dtLastQuarterWeeksAnalysis.getValue(intRowCounter, 3); 
        var arrTestRunDates = removeDuplicates(strTestRunDates); 
        var arrTestRunResults = getSortedTestRuns(strTestRunDates); 
        for (var intRowIterator = 0; intRowIterator < arrTestRunResults.length; intRowIterator++) { 
         var strTestRunDate = getTestRunOfDate(arrTestRunResults[intRowIterator], gblWeeksInformation); 
         tblWeekOverAnalysisRow[intRowCounter] = arrTestRunResults[intRowIterator]; 
        } 
       } 
      } 
     } 

ローの数を問い合せると、両方の実行で同じ回答が得られます。私はここで何が欠けていますか?

私の以前の回答に基づいて解決しましたquestion:No Luck。

<script type="text/javascript"> 
     google.setOnLoadCallback(drawVisualization); 
     function drawVisualization() { 
      var sqlQuery = "sql?tq=select MonthName, WeekStart, WeekEnd &sqlQueryID=last_quarter_weeks"; 
      var query1 = new google.visualization.Query(sqlQuery); 

      query1.send(function (queryResponse) { 
       drawQuestions(queryResponse); 
      }); 

      var sqlQuery2 = "sql?tq=select Project, Passed, Failed, WeekStart, WeekEnd, WeekNumber &sqlQueryID=last_quarter_weeks_analysis"; 
      var query2 = new google.visualization.Query(sqlQuery2); 

      query2.send(function (queryResponse) { 
       drawQuestions(queryResponse); 
      }); 

     } 
     function drawQuestions(response) { 
      alert(response.getDataTable().getNumberOfRows()); 
      //answer is 11 & 11. expected is 11 & 180 
     } 
    </script> 

おかげ

答えて

0

私の謝罪。私は整理した。

var sqlQuery2 = "sql?tq=select Project, Passed, Failed, WeekStart, WeekEnd, WeekNumber &sqlQueryID=last_quarter_weeks_analysis"; 

誤った列名が付けられ、クエリでエラーが発生しました。この動作では、2番目のクエリを実行して常に最初のクエリを返すことはできません。

関連する問題