【问题标题】:Dashing List Widget - Data from Microsoft SQL not showing短跑列表小部件 - 来自 Microsoft SQL 的数据未显示
【发布时间】:2016-05-19 22:21:49
【问题描述】:

我一直在努力解决这个问题,正在寻求帮助。我有一个运行良好的 Dashing Wallboard。我正在尝试添加一个显示数据列表的小部件,但小部件和 history.yml 文件中都没有显示任何数据。

我的其他小部件都从同一个 SQL 服务器中提取数据,这就是为什么下面省略了连接信息:

我的 .rb 作业文件中有以下代码:

results = client.execute("
  SELECT [data] as name, [data2] as value
  FROM [DB]
  Where [Conditions]
  GROUP BY [Tier];
")

   datalist = results.map do |row|
      row = {
        :label => row['name'],
        :value => row['value']
      }
    end     
send_event('listofdata', { items: datalist } )  

我的仪表板小部件如下所示:

<li data-row="2" data-col="3" data-sizex="1" data-sizey="2">
  <div data-id="listofdata" data-view="List" data-title="This is a list of data" data-unordered="true"></div>
</li>   

我的 SQL 查询的输出如下所示:

Tier 1  10
Tier2   6
Tier 3  31

数据类型为 varchar 和 int。我确实在 name 列中包含了空格并且没有空格,以表明查询的结果确实包含空格。

我也尝试过像这样做 ruby​​ 方面,但还是不行。

results.each do |row|
    send_event('listofdata', { label: row['name'], value: row['value'] })  
end 

无论我做什么,我都无法在小部件中显示任何数据。 我在这里遗漏了一些非常明显的东西吗?

更新 1: 也试过这个,没用:

datalist = results.each(:symbolize_keys => true, :as => :array, :cache_rows => true, :empty_sets => true) do |rowset| end

data_count = Array.new

for j in (0...results.affected_rows)
    data_count << {"label" => datalist[j].at(0), "value" => datalist[j].at(1).to_i}
end

【问题讨论】:

  • 您也可以尝试使用并非来自数据库的手工数据创建send_event('listofdata', ...) 命令,例如send_event('listofdata', { items: [ { label: 'test label', value: 'test value' }, { label: 'test label 2', 'test value 2' }] })
  • 感谢 cmets kimmmo。我尝试使用您的代码,但它仍然没有在列表小部件中显示数据。我相信这个问题可能与创建哈希的方式以及 List 小部件的预期有关。我创建了一个独立的 ruby​​ 脚本来查询数据并将哈希值放到屏幕上。它的格式似乎与 dashing 所寻找的格式不同。

标签: sql-server ruby ubuntu sinatra dashing


【解决方案1】:

它似乎与列名和哈希键冲突。这已确认有效:

results = client.execute("
  SELECT CAST([data] as varchar) as name, CAST([data2] as int) as count
  FROM [DB]
  Where [Conditions]
  GROUP BY [Tier];
")

   datalist = results.map do |row|
      row = {
        :label => row['name'],
        :value => row['count']
      }
    end     
send_event('listofdata', { items: datalist } )  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多