请问一下我有这样一段打印的命令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 实际值替换打印命令参数里的{单据编号},,,,,注:打印命令里的参数个数和参数是什么,都是不确定的。这个应该怎么实现呢???请各位老大们帮忙啊!!!

解决方案 »

  1.   

    我的数据库内有很多张表,要从哪张表内查询什么字段,就是根据这张表来做的我的问题是,我怎么知道我的打印命令中有哪些参数是在这张表内的ColumnDescription存在的,
    我怎么根据打印命令里有什么参数去查这张表的ColumnDescription字段?
    只要能将打印命令里的参数{XXX}和ColumnDescription字段对应上,那剩下的我就能做了??请问各位老大,应该怎么做》?
    我要的最后结果就是将打印命令内的所有{参数}都替换为数据库中表的相应字段的实际值!!!!
      

  2.   

    比如:
    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
      

  3.   


                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);
                    }
                }