【问题标题】:DBCheckComboBox get values in SQL ServerDBS Check ComboBox 在 SQL Server 中获取值
【发布时间】:2013-10-04 16:07:13
【问题描述】:

我有一列是NVarChar(MAX),它包含这样的文字:;0,4,6

这些是另一个表中的 Flag 值。

A.我将组件的EditValueFormat 属性设置为cvfIndices

B.我使用如下代码将表 a 中的表值放入 TcxDBCheckComboBox 组件:

Query.Active := True;  
while not Query.Eof do begin
  cxDBCheckComboBox1.Properties.Items.AddCheckItem(QueryCaptionField.AsString);
  Query.Next;
end;
Query.Active := False;

C.我分配了一个数据源来指向我想在程序中选择值时保存值的列服务器?

【问题讨论】:

  • 这是众所周知的问题。这是一种方法,可能会对您有所帮助。我会标准化并将 csv 列扔进垃圾箱。 stackoverflow.com/questions/13682188/…
  • 我同意托尼的观点。但是,您可以使用POSITION(',' + fieldname + ',', listfieldname) <> 0 使用 SQL 查询像 ',0,4,6,' 这样的字符串。
  • Jens 'POSITION' 不是可识别的内置函数名称。"
  • 这应该教会你永远,永远不要在数据库中使用 CSV。这是纯粹的邪恶。

标签: sql-server delphi devexpress


【解决方案1】:

在使用 cvfIndices 时找到了答案,保存在数据库中的值表示组合框中的值的索引,因此您可以这样查询:

SELECT * FROM TechCardsData 
LEFT JOIN TechCardsOperations
on 
CHARINDEX(CAST(TechCardsOperations.ID-1 as nvarchar(max)),TechCardsData.OperationsFlags) <> 0

一切正常 :) 希望这对某人有帮助 :)

【讨论】:

  • 忘了提醒你需要使用 RowNumber 来代替它,相信我我试过了:D
  • CHARINDEX('1', ';10') &lt;&gt; 0True,所以这是一个非常危险的解决方案。
  • 同意这是一个危险的解决方案,感谢 Jens 指出这一点,也许有人会提出更好的解决方案。
猜你喜欢
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2018-11-14
相关资源
最近更新 更多