string iDFieldName = UIRecordHelper.IsFieldExist(selectedRecord[0], "MainID") ? "MainID" : "ID";
时间: 2023-02-09 21:52:24 浏览: 22
如果选中的记录的第一个字段中存在"MainID"字段,那么将"MainID"赋值给iDFieldName;否则将"ID"赋值给iDFieldName。
这段代码的意思是:使用UIRecordHelper类的IsFieldExist方法检查选中的记录的第一个字段中是否存在"MainID"字段,如果存在,就将"MainID"赋值给iDFieldName,否则将"ID"赋值给iDFieldName。
相关问题
UICommonHelper.DoDataCollect(_strongPart); _strongPart.Model.ClearErrorMessage(); IList<IUIRecord> selectedRecords = UIRuntimeHelper.Instance.GetSelectRecordFromCache(_strongPart.Model.BOMMaster_BOMComponents); if (selectedRecords.Count == 0) return; Dictionary<long, IUIRecord> dict = new Dictionary<long, IUIRecord>(); List<long> iDs = new List<long>(); string iDFieldName = UIRecordHelper.IsFieldExist(selectedRecords[0], "MainID") ? "MainID" : "ID"; foreach (IUIRecord record in selectedRecords) { long iD = UIRecordConverter.AsLong(record, iDFieldName); if (dict.ContainsKey(iD)) continue; dict.Add(iD, record); iDs.Add(iD); }
这段代码的作用是从选定的记录中提取出主键 ID,并将这些 ID 放入字典和列表中。首先,调用 `UICommonHelper.DoDataCollect` 方法进行数据收集,然后清除错误消息。接下来,使用 `UIRuntimeHelper.Instance.GetSelectRecordFromCache` 方法获取选定的记录。如果选定的记录数为 0,则直接返回。否则,创建一个字典和一个列表用于存储记录的主键 ID。然后,使用 `UIRecordHelper.IsFieldExist` 方法检查第一个记录中是否存在名为 "MainID" 的字段。如果存在,则将 iDFieldName 设为 "MainID";如果不存在,则将 iDFieldName 设为 "ID"。接下来,遍历所有选定的记录,并使用 `UIRecordConverter.AsLong` 将记录的主键转换为长整型,然后将这些 ID 添加到字典和列表中。
SELECT t1.id, STUFF( ( SELECT ',' + t2.hsdj FROM formtable_main_43_dt1 t2 WHERE t1.id = t2.mainid FOR XML PATH ( '' ) ), 1, 1, '' ) AS MergedValues FROM formtable_main_43 t1 INNER JOIN formtable_main_43_dt1 t2 ON t1.id = t2.mainid GROUP BY t1.id 提示从数据类型 varchar 转换为 numeric 时出错,怎么解决
这个错误通常表示在将 varchar 类型的数据转换为 numeric 类型时发生了错误。您需要检查以下几点:
1. 对于 `t2.hsdj` 字段,确保其实际上是存储数值类型的数据。如果该字段存储的是字符串类型的数据,转换时可能会出问题。
2. 使用 `TRY_CAST` 或 `TRY_CONVERT` 函数将 `t2.hsdj` 转换为 numeric 类型。这样如果某些数据无法转换,将会返回 NULL 值而不会抛出异常。
下面是修改后的 SQL 语句,其中使用了 `TRY_CAST` 函数:
```sql
SELECT
t1.id,
STUFF((
SELECT ',' + TRY_CAST(t2.hsdj AS numeric(18,2))
FROM formtable_main_43_dt1 t2
WHERE t1.id = t2.mainid
FOR XML PATH('')
), 1, 1, '') AS MergedValues
FROM formtable_main_43 t1
INNER JOIN formtable_main_43_dt1 t2 ON t1.id = t2.mainid
GROUP BY t1.id;
```
请注意,上述 SQL 语句中的 `numeric(18,2)` 表示将 `t2.hsdj` 转换为数值类型,并保留两位小数。您可以根据实际情况进行调整。