select kcb.课程ID,
km1.科目名称 as 科目1,
km2.科目名称 as 科目2,
km3.科目名称 as 科目3,
km4.科目名称 as 科目4,
km5.科目名称 as 科目5,
km6.科目名称 as 科目6,
km7.科目名称 as 科目7,
km8.科目名称 as 科目8,
km9.科目名称 as 科目9,
km10.科目名称 as 科目10
from 课程表 kcb
left join 科目表 km1 on kcb.科目1=km1.科目ID
left join 科目表 km2 on kcb.科目2=km2.科目ID
left join 科目表 km3 on kcb.科目3=km3.科目ID
left join 科目表 km4 on kcb.科目4=km4.科目ID
left join 科目表 km5 on kcb.科目5=km5.科目ID
left join 科目表 km6 on kcb.科目6=km6.科目ID
left join 科目表 km7 on kcb.科目7=km7.科目ID
left join 科目表 km8 on kcb.科目8=km8.科目ID
left join 科目表 km9 on kcb.科目9=km9.科目ID
left join 科目表 km10 on kcb.科目10=km10.科目ID
好象就是这样了吧
km1.科目名称 as 科目1,
km2.科目名称 as 科目2,
km3.科目名称 as 科目3,
km4.科目名称 as 科目4,
km5.科目名称 as 科目5,
km6.科目名称 as 科目6,
km7.科目名称 as 科目7,
km8.科目名称 as 科目8,
km9.科目名称 as 科目9,
km10.科目名称 as 科目10
from 课程表 kcb
left join 科目表 km1 on kcb.科目1=km1.科目ID
left join 科目表 km2 on kcb.科目2=km2.科目ID
left join 科目表 km3 on kcb.科目3=km3.科目ID
left join 科目表 km4 on kcb.科目4=km4.科目ID
left join 科目表 km5 on kcb.科目5=km5.科目ID
left join 科目表 km6 on kcb.科目6=km6.科目ID
left join 科目表 km7 on kcb.科目7=km7.科目ID
left join 科目表 km8 on kcb.科目8=km8.科目ID
left join 科目表 km9 on kcb.科目9=km9.科目ID
left join 科目表 km10 on kcb.科目10=km10.科目ID
好象就是这样了吧
Select FirstField as '中文标题1',SecondField as '中文标题2' from aTable
将这样的查询语句所查询到的数据与DataGrid绑定之后,在DataGrid就可以显示你需要的中文标题了
那么表里面的结构就是
ID,km1,km2,km3...km10,
然后,修改DataTable_KCB里面的值;
DataRow changeRow;
for (i=0;i<dtSelect.Rows.Count;i++)
{
changeRow = DataTable_KCB.Rows[i];
changeRow.BeginEdit();
if (changeRow["km1"] = "XXX") changeRow["km1"]=YYY;
if (changeRow["km2"] = "XXX") changeRow["km2"]=YYY;
...
if (changeRow["km10"] = "XXX") changeRow["km10"]=YYY;
changeRow.EndEdit();
}
XXX <-> YYY 的对应关系你必须在数据库里面获得,这个就不用说了。
你是不是这个意思呢?
from 科目表 as a,课程表 as b1, 课程表 as b2,课程表 as as b3,...,课程表 as as b10
where a.科目ID=b1.科目1 and a.科目ID=b2.科目2,...,a.科目ID=b10.科目10
我感觉用单纯SQL语句的话会比较快,还要考虑到更新问题!
下面我贴出代码,希望大家帮我想想有什么更好的方法,谢谢!private void Page_Load(object sender, System.EventArgs e)
{
DataTable dtCourse;
DataRow drCourse;
OleDbCommand cmd;
String sql;
OleDbDataReader reader; daCourse.Fill(dsCourse,"课程表");
dtCourse = dsCourse.Tables["课程表"]; DataColumn myColumn = new DataColumn();
myColumn.DataType = Type.GetType("System.String");
myColumn.ColumnName = "专业";
dtCourse.Columns.Add(myColumn);
for(int i=0; i < dtCourse.Rows.Count; i++)
{
drCourse = dtCourse.Rows[i];
drCourse.BeginEdit(); sql = "Select 名称 from 专业表 Where 专业ID=" + drCourse["专业ID"];
cmd = new OleDbCommand(sql,cnScore);
cnScore.Open();
reader = cmd.ExecuteReader();
reader.Read();
drCourse["专业"] = reader.GetString(0);
reader.Close();
cnScore.Close();
drCourse.EndEdit();
}
dvCourse = new DataView(dtCourse);
dgCourse.DataSource = dvCourse;
dgCourse.DataBind();
}
km1.科目名称 as 科目1,
km2.科目名称 as 科目2,
km3.科目名称 as 科目3,
km4.科目名称 as 科目4,
km5.科目名称 as 科目5,
km6.科目名称 as 科目6,
km7.科目名称 as 科目7,
km8.科目名称 as 科目8,
km9.科目名称 as 科目9,
km10.科目名称 as 科目10
from ((((((((((课程表 kcb
left join 科目表 km1 on kcb.科目1=km1.科目ID)
left join 科目表 km2 on kcb.科目2=km2.科目ID)
left join 科目表 km3 on kcb.科目3=km3.科目ID)
left join 科目表 km4 on kcb.科目4=km4.科目ID)
left join 科目表 km5 on kcb.科目5=km5.科目ID)
left join 科目表 km6 on kcb.科目6=km6.科目ID)
left join 科目表 km7 on kcb.科目7=km7.科目ID)
left join 科目表 km8 on kcb.科目8=km8.科目ID)
left join 科目表 km9 on kcb.科目9=km9.科目ID)
left join 科目表 km10 on kcb.科目10=km10.科目ID)呵呵,再试试
你能不能把可运行的源码发到我我邮箱,包括mdb,麻烦你了,
我想快点结贴:)
太谢谢你了! wd_318(初学者.net)