请问,怎么将一个字符串内的所有参数,根据数据库表的同名称列名查询出的结果将它们替换?

benbirdar 2008-09-18 02:59:26
请问一下

我有这样一段打印的命令

JOB NM=cmdprint,ID=1234
{标签编号}
PAPER PG=20,PW=1260,PH=600
{单据编号}
ENV MK=2,DR=1,DK=10,SP=1,PS=207,PO=0,TO=0,CO=0,
{数量}
XO=0,YO=0,MD=1,CP=0
START
RECT SX=138,SY=70,EX=887,EY=513,WD=2,TP=1
FONT TP=3,AT=2,DR=1,
{11位的工令单号}
WD=28,LG=28,SL=0
TEXT X=160,Y=119,L=1
TPOPart:{数量}

另外我有一张这样的表


打印命令里的{XX}是打印的参数,
现在我要做的事情是,如果打印命令里的参数{XX}和这张表的字段ColumnDescription的某个值相同,如打印命令里是{数量},那么,就从这张表里查出ColumnDescription值为“数量”的对应字段TableName为 NN_WorkoutEntry 表里查询对应字段ColumnName 为FAmount的值,也就是
select FAmount from NN_WorkoutEntry where ...
然后将这个查询出来的结果第一行第一列的FAmount 实际值替换打印命令参数里的{数量},,,,,

同理,如果打印命令里有出现{单据编号},那么根据这张表显示的,就应该执行命令select FBillNo from nn_workout where ...
然后将这个查询出来的结果第一行第一列的FAmount 实际值替换打印命令参数里的{单据编号},,,,,

注:打印命令里的参数个数和参数是什么,都是不确定的。

这个应该怎么实现呢???

请各位老大们帮忙啊!!!
...全文
222 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbirdar 2008-09-18
  • 打赏
  • 举报
回复
4 楼牛X!!!!!!
非常感谢!!!!!!!!!!
yagebu1983 2008-09-18
  • 打赏
  • 举报
回复
学习ojlovecd!!
我姓区不姓区 2008-09-18
  • 打赏
  • 举报
回复

string str = @"JOB NM=cmdprint,ID=1234
{标签编号}
PAPER PG=20,PW=1260,PH=600
{单据编号}
ENV MK=2,DR=1,DK=10,SP=1,PS=207,PO=0,TO=0,CO=0,
{数量}
XO=0,YO=0,MD=1,CP=0
START
RECT SX=138,SY=70,EX=887,EY=513,WD=2,TP=1
FONT TP=3,AT=2,DR=1,
{11位的工令单号}
WD=28,LG=28,SL=0
TEXT X=160,Y=119,L=1
TPOPart:{数量} ";
Regex reg = new Regex("{(?<param>.*)}");
List<string> list = new List<string>();
Match m = reg.Match(str);
while (m.Success)
{
list.Add(m.Groups["param"].Value);
m = m.NextMatch();
}
using (SqlConnection conn = new SqlConnection("连接字符串"))
{
conn.Open();
foreach (string s in list)
{
string replacement = "", tableName = "", columnName = "";
using (SqlCommand cmd = new SqlCommand("select * from yourtable where ColumnDescription='" + s + "'", conn))
{
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
{
tableName = dr["TableName"].ToString();
columnName = dr["ColumnName"].ToString();
}
}
}
using (SqlCommand cmd = new SqlCommand("select " + columnName + " from " + tableName, conn))
{
replacement = cmd.ExecuteScalar().ToString();
}
str.Replace(s, replacement);
}
}
fht123 2008-09-18
  • 打赏
  • 举报
回复
比如:
dataset ds=new dataset()
string sql1="select TableName,ColumnName from 表 where ColumnDes='"++"'"
SqlDataAdapter adp=new SqlDataAdapter(sql1,conn)
adp.fill(ds)
string tablename=ds.table[0].rows[0][0].tostring()
string columnname=ds.table[0].rows[0][1].tostring()
string sql2="select "+columnname+" from "+tablename+""
执行sql2
fht123 2008-09-18
  • 打赏
  • 举报
回复
打印参数作为查询条件,查出对应的记录,把该记录的表名和列名再作为参数取相应的数据.
benbirdar 2008-09-18
  • 打赏
  • 举报
回复
我的数据库内有很多张表,要从哪张表内查询什么字段,就是根据这张表来做的



我的问题是,我怎么知道我的打印命令中有哪些参数是在这张表内的ColumnDescription存在的,
我怎么根据打印命令里有什么参数去查这张表的ColumnDescription字段?
只要能将打印命令里的参数{XXX}和ColumnDescription字段对应上,那剩下的我就能做了??

请问各位老大,应该怎么做》?
我要的最后结果就是将打印命令内的所有{参数}都替换为数据库中表的相应字段的实际值!!!!

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧