【问题标题】:Reading data from a database in Anylogic在 Anylogic 中从数据库中读取数据
【发布时间】:2020-02-14 12:19:30
【问题描述】:

我正在使用 Anylogic 设计一个模拟模型来模拟一家汽车公司的装配过程。我有一个数据库,记录了每个工作站的所有汽车型号及其循环时间。我希望模型从数据库中读取工作站的延迟时间;这意味着,代码必须拉动汽车型号名称与当前延迟的代理匹配的周期时间。

我试过代码:SELECT "cycle time column name" FROM "Table_name" WHERE car_model column name" = "Agent_type.this"

没有成功。

知道该怎么做吗?

【问题讨论】:

  • 嘿,欢迎来到 SOF :) “it didn't work out”是什么意思。意思是?请帮助我们帮助您。检查stackoverflow.com/help/how-to-ask 以获取一些信息,但至少告诉我们错误:-)。还显示数据库表设置(请截图),每列的数据类型......让我们的生活更轻松
  • 嘿,本杰明,我收到的错误消息是:“代理无法解析为类型”。我还尝试了代码:“ SELECT ct1 FROM car_models WHERE unit_name = agent.unitName =="VW" ? "VW"; 这样,模型运行,但它没有提取正确的数据。数据库有两个一列汽车模型(字符串类型)和每个工作站循环时间的剩余列(整数类型)。我希望这能澄清。非常感谢

标签: database agent anylogic


【解决方案1】:

您的 QL 查询错误。 Agent_type.this 指的是特定的代理实例,但您的 SQL 查询此时需要一个字符串。

因此,在您的 Agent_type 代理类型中,您应该有一个 String 类型的变量或参数,该变量或参数已经包含汽车型号名称。假设它被称为modelName

现在您的 SQL 可以使用

SELECT "cycle time column name" FROM "Table_name" WHERE car_model column name" = "Agent_type.modelName"

【讨论】:

  • 您好本杰明,非常感谢您的意见。我试过了,SQL 似乎接受了它,但我现在收到一个 java 错误消息:“无法对非静态字段 Agent_type.modelName 进行静态引用”,知道如何解决它。
  • 这里是完整的代码: SELECT ct1 FROM car_models WHERE unit_name = Car.unitName =="VW" ? “大众”:Car.unitName ==“GTS”? "GTS" : Car.unitName == "HB" ? "HB" : Car.unitName == "TGM" ? “TGM”:“CLA”
  • 您不需要引用代理类型“汽车”,而是引用单个汽车代理(具有特定的 unitName)。你如何做到这一点取决于你在模型中调用 SQL 语句的位置以及它是如何设置的。如果您无法弄清楚,请发布一个带有屏幕截图和良好描述的新问题:-)
猜你喜欢
  • 2021-12-12
  • 2021-07-09
  • 2021-02-14
  • 2021-12-19
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
相关资源
最近更新 更多