SELECT a.*,b.* FROM Survey AS A , Surveyitem AS B where A.SurveyID=B.ParrentID and A.ShowID=1
我用以前的 sql2005的可以运行 数据库换成 ACCESS就不能运行了
ACCESS不支持inner join吧? SELECT * FROM Survey AS A , Surveyitem AS B where A.SurveyID=B.ParrentID and A.ShowID=1这样就行,和楼主的结果是一样的。
不好意思,好像是支持的。可以改为 SELECT * FROM Survey A INNER JOIN Surveyitem B ON A.SurveyID=B.ParrentID and A.ShowID=1
至少一个参数没有被指定值。 public DataSet ShowA() { using (System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(str)) { using (System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand()) { cmd.CommandText = "SELECT a.*,b.* FROM Survey AS A , Surveyitem AS B where A.SurveyID=B.ParrentID and A.ShowID=1"; cmd.Connection = con; using (System.Data.OleDb.OleDbDataAdapter dp = new System.Data.OleDb.OleDbDataAdapter(cmd)) { dp.Fill(ds); return ds; } } } }
我刚测试,ACCESS支持INNER JOIN.语句可执行.
估计是因为a.*,b.*中有重复的字段,你自己改个名字,例如select a.* , b.col newcol from
SELECT * FROM Survey AS A , Surveyitem AS B where A.SurveyID=B.ParrentID and A.ShowID=1这样就行,和楼主的结果是一样的。
SELECT * FROM Survey A INNER JOIN Surveyitem B ON A.SurveyID=B.ParrentID and A.ShowID=1
{
using (System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(str))
{
using (System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand())
{
cmd.CommandText = "SELECT a.*,b.* FROM Survey AS A , Surveyitem AS B where A.SurveyID=B.ParrentID and A.ShowID=1";
cmd.Connection = con;
using (System.Data.OleDb.OleDbDataAdapter dp = new System.Data.OleDb.OleDbDataAdapter(cmd))
{
dp.Fill(ds);
return ds;
}
}
}
}
B.ParrentID
A.ShowID
检查这三个字段是否存在,或者是拼错了。
在SQL中会提示字段不存在,在ACCESS中会认为是一个变量,值为空,所以产生参数未被指定值的错误