Sql MS Access:内部联接的问题

Sql MS Access:内部联接的问题,sql,jasper-reports,ireport,ms-access-2013,Sql,Jasper Reports,Ireport,Ms Access 2013,我曾在MS access 2013中尝试过此代码,但如果我在Ireport中为我的报告创建查询时使用此代码,则会出现以下错误: java.sql.SQLException:[Microsoft][ODBC Microsoft Access驱动程序]太 参数很少。预期1 如果我只使用一个表,则查询有效,但如果我尝试连接两个表,则得到的结果是: SELECT Incoming.`Incoming_ItemNumber` AS ItemNumber, Incoming.`Date_I

我曾在MS access 2013中尝试过此代码,但如果我在Ireport中为我的报告创建查询时使用此代码,则会出现以下错误:

java.sql.SQLException:[Microsoft][ODBC Microsoft Access驱动程序]太 参数很少。预期1

如果我只使用一个表,则查询有效,但如果我尝试连接两个表,则得到的结果是:

 SELECT  
   Incoming.`Incoming_ItemNumber` AS ItemNumber,
   Incoming.`Date_Incoming` AS 'Date',
   allItems.`Description` , Incoming.`Quantity` ,
   Incoming.`Supplier` , Incoming.`Invoice_Number` ,
   Incoming.`Price` , Incoming.`JO` 
FROM 
   allItems 
INNER JOIN 
   Incoming ON allItems.Item_Number = Incoming.Item_Number;
编辑:我试图做的是从传入的表和allitem中获取值

以下是我的表格内容:

所有项目:项目编号[主要],说明 进货:进货项目编号[主要],项目编号[国外],进货日期,数量,供应商,发票编号,价格,金额,工作


请注意,我使用的查询在MS ACCESS 2013中运行良好

在我的代码中进行了大量实验后,我提出了自己的解决方案:

1.)我重新“链接”了我的表关系

2.)我使用MS Access使用查询设计工具创建了一个新查询 其中:我选择了所需的表和数据列,并按日期进行排序

3.)我保存了查询设计并转到“SQL视图”

4.)我复制了sql查询

5.)转到我的IReport报告查询并将其粘贴到那里

然后我点击了“阅读查询”按钮

它成功了。 以下是Access生成的代码:

Query error


Message:
    net.sf.jasperreports.engine.JRException: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
Level:
    SEVERE
Stack Trace:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
    com.jaspersoft.ireport.designer.data.fieldsproviders.SQLFieldsProvider.getFields(SQLFieldsProvider.java:174)
    com.jaspersoft.ireport.designer.connection.JDBCConnection.readFields(JDBCConnection.java:472)
    com.jaspersoft.ireport.designer.wizards.ConnectionSelectionWizardPanel.validate(ConnectionSelectionWizardPanel.java:146)
    org.openide.WizardDescriptor$7.run(WizardDescriptor.java:1357)
    org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
    org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
    sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
    sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
    sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3156)
    sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:215)
    sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(JdbcOdbcPreparedStatement.java:90)
    net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:233)
    com.jaspersoft.ireport.designer.data.fieldsproviders.SQLFieldsProvider.getFields(SQLFieldsProvider.java:126)
    com.jaspersoft.ireport.designer.connection.JDBCConnection.readFields(JDBCConnection.java:472)
    com.jaspersoft.ireport.designer.wizards.ConnectionSelectionWizardPanel.validate(ConnectionSelectionWizardPanel.java:146)
    org.openide.WizardDescriptor$7.run(WizardDescriptor.java:1357)
    org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
    org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)

检查这里的答案:@Amrola我试图从一个表中选择列,但不知怎么的,它起了作用。下面是代码:“选择Incoming.Incoming\u ItemNumber为[ItemNumber],Incoming.Date\u Incoming为[Date],Incoming.Quantity为[Quantity],Incoming.Supplier为[Supplier],Incoming.Invoice\u Number为[Invoice Number],Incoming.Price为[Price],Incoming.JO为[JO]来自Incoming”
SELECT 
   allItems.Item_Number,
   Incoming.Date_Incoming,
   allItems.Description,
   Incoming.Quantity, 
   Incoming.Supplier,
   Incoming.Invoice_Number,
   Incoming.Price,
   Incoming.Amount,
   Incoming.JO
FROM 
   allItems 
RIGHT JOIN 
   Incoming 
ON 
   allItems.Item_Number = Incoming.Item_Number
ORDER BY 
   Incoming.Date_Incoming ASC;