FineUI之使用SQL脚本从数据库表中生成对应的输入控件

Posted yutingliuyl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FineUI之使用SQL脚本从数据库表中生成对应的输入控件相关的知识,希望对你有一定的参考价值。

在WEB开发时。常常须要根据数据库表中的字段建立对应的输入控件,来获取输入的数据。每次都须要按字段来敲,显然太低效。并且easy出错。这里提供一个SQL脚本生成对应输入控件的方法。

USE DBDemo
DECLARE @TEMP_TABLE_NAME NVARCHAR(512)
DECLARE @WIDTH NVARCHAR(50)

SET @TEMP_TABLE_NAME=‘Stuff‘
SET @WIDTH=‘200‘

SELECT 
 ‘<f:‘+TOKEN+‘ runat="server" ID="‘+TOKEN+‘_‘+COLUMN_NAME+‘" Label="‘
 --没有描写叙述的字段,使用COLUMN_NAME作为Label
 +CAST(CASE 
		WHEN LEN(CAST(REMARK AS NVARCHAR(150)))<=0 THEN COLUMN_NAME 
		WHEN LEN(CAST(ISNULL(REMARK,‘‘) AS NVARCHAR(150)))<=0 THEN COLUMN_NAME
		ELSE REMARK 
	   END
	   AS NVARCHAR(150)
	  )
 +‘" ‘+‘ Width="‘[email protected]+‘"‘+‘></f:‘+TOKEN+‘>‘ AS DATA --标记串
 --,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TOKEN,EXTEND_STR,REMARK
FROM
(
	SELECT 
		   TEMP_SCHEMA_COLUMNS.TABLE_NAME ,--AS ‘表名‘,
		   TEMP_SCHEMA_COLUMNS.COLUMN_NAME ,--AS ‘列名‘,
		   TEMP_SCHEMA_COLUMNS.DATA_TYPE ,--AS ‘类型‘,
		   TEMP_EXTENDED_PROPERTIES.value AS REMARK ,--AS ‘描写叙述‘,
		   (
			   CASE 	       
					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE=‘int‘ THEN ‘NumberBox‘
					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE=‘numeric‘ THEN ‘NumberBox‘
					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE=‘smallint‘ THEN ‘NumberBox‘
					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE=‘datetime‘ THEN ‘DatePicker‘
					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE=‘bit‘ THEN ‘CheckBox‘							
					ELSE ‘TextBox‘
			   END
			) AS TOKEN,--标记
			(
				CASE 
					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE=‘int‘ THEN ‘DecimalPrecision="0"‘
					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE=‘smallint‘ THEN ‘DecimalPrecision="0"‘
					ELSE ‘‘
				END
			) AS EXTEND_STR --特殊属性标记串
	FROM
	(
		(
			SELECT TEMP_TABLES.name AS table_name,
				   TEMP_COLUMNS.name AS column_name,
				   TEMP_COLUMNS.id AS table_id,
				   TEMP_COLUMNS.colid AS column_id FROM
			(SELECT * FROM   sysobjects WHERE type=‘U‘) AS TEMP_TABLES
			INNER JOIN
			(SELECT * FROM syscolumns ) AS TEMP_COLUMNS ON
			TEMP_TABLES.id=TEMP_COLUMNS.id
		) AS TEMP_TABLE_COLUMNS		
		INNER JOIN
		(
			select TABLE_NAME,COLUMN_NAME,DATA_TYPE from information_schema.columns 
		) AS TEMP_SCHEMA_COLUMNS
		ON TEMP_SCHEMA_COLUMNS.TABLE_NAME=TEMP_TABLE_COLUMNS.table_name 
		   AND 
		   TEMP_SCHEMA_COLUMNS.COLUMN_NAME=TEMP_TABLE_COLUMNS.column_name		
		FULL JOIN
		(
		   SELECT value,major_id,minor_id FROM sys.extended_properties
		) AS TEMP_EXTENDED_PROPERTIES
		ON TEMP_TABLE_COLUMNS.table_id=TEMP_EXTENDED_PROPERTIES.major_id
		   AND 
		   TEMP_TABLE_COLUMNS.column_id=TEMP_EXTENDED_PROPERTIES.minor_id
	)
	WHERE [email protected]_TABLE_NAME
) AS TEMP_TABLE

说明:

1.DBDemo是数据库名称。依实际情况指定。
2.參数@TEMP_TABLE_NAME为相生成输入控件的数据库表名,依实际情况指定。

这里是Stuff。
3.參数@WIDTH为控件的宽度,依实际情况指定。

这里是200。
4.TOKEN为根据字段类型生成相应的标记。实际使用中。可能相应的标记不太准确。请依使用情况作出调整。
5.EXTEND_STR是特殊属性标记串。

这里对NumberBox控件中。为int和smallint限定小数位数为0.即DecimalPrecision="0"。
6.控件中的Label,以字段的描写叙述作为首选,假设没有字段描写叙述的。则使用字段名。



生成的标记例如以下图

技术分享

Web页面中使用例如以下图

技术分享

生成的效果图例如以下图

技术分享



转载请注明出处http://blog.csdn.net/xxdddail/article/details/37877691













以上是关于FineUI之使用SQL脚本从数据库表中生成对应的输入控件的主要内容,如果未能解决你的问题,请参考以下文章

任务 - 在 Azure Synapse Serverless SQL 中生成脚本

从excel表中生成批量SQL,将数据录入到数据库中

从excel表中生成批量SQL,将数据录入到数据库中

如何通过pl sql函数从表中生成列表?

从迁移中生成 SQL 而无需全部删除

如何把DB2的数据直接导入SQL server中