2011-08-28 5 views
0

Visual Studio 2010을 사용하여 액세스 데이터베이스에서 데이터를 편집, 삭제 또는 삽입 할 수있는 양식을 만듭니다. 웹 브라우저에서 양식을 실행하려고하면 "쿼리 입력에 적어도 하나의 테이블이나 쿼리가 있어야합니다."라는 오류 메시지가 나타납니다. 문제는 내 코드/구문과 관련이 있다고 생각하지만 문제의 원인을 파악할 수는 없습니다. 아래 코드 중 일부를 추가했는데 어떤 도움이나 힌트를 주시면 감사하겠습니다. 고맙습니다.오류 가져 오기 "쿼리 입력에 하나 이상의 테이블이나 쿼리가 있어야합니다."

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
      DataFile="~/App_Data/database.accdb" SelectCommand="SELECT * FROM [database]" 
      DeleteCommand="DELETE FROM [database] WHERE ([EmployeeID] = @EmployeeID)" 
      UpdateCommand="UPDATE [database] SET [Phone][email protected],[FirstName] = @FirstName, [LastName]= @LastName WHERE ([EmployeeID] = @EmployeeID)" 
      InsertCommand="INSERT INTO [database] (Phone,FirstName,LastName) VALUES (@Phone,@FirstName,@LastName) WHERE ([EmployeeID] = @EmployeeID)"> 
      <InsertParameters> 
      <asp:formparameter name="Phone" formfield="tbPhone" /> 
      <asp:formparameter name="FirstName" formfield="tbFirstName" /> 
      <asp:formparameter name="LastName" formfield="tbLastName" /> 
      </InsertParameters> 
     </asp:AccessDataSource> 
     <asp:GridView ID="gvEmployee" runat="server" AutoGenerateColumns="False" 
      DataSourceID="AccessDataSource1" DataKeyNames="EmployeeID" 
      AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateInsertButton="True" 
      EmptyDataText="There are no data records to display." Width="372px"> 
      <Columns> 
       <asp:BoundField DataField="Phone" HeaderText="Phone" 
        SortExpression="Phone" /> 
       <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
        SortExpression="FirstName" /> 
       <asp:BoundField DataField="LastName" HeaderText="LastName" 
        SortExpression="LastName" /> 

      </Columns> 
     </asp:GridView>   
    </td> 
    </tr> 
    <tr> 
    <td> 
     Phone Number: 
     <asp:TextBox ID="tbPhone" runat="server"></asp:TextBox><br /> 
     First Name: 
     <asp:TextBox ID="tbFirstName" runat="server"></asp:TextBox> <br /> 
     Last Name:&nbsp; 
     <asp:TextBox ID="tbLastName" runat="server"></asp:TextBox> <br />   
     <asp:button id="Button1" runat="server" text="New Employee" onclick="InsertEmployee" /> 
    </td> 
    </tr> 

답변

1

[데이터베이스] 란 무엇입니까? 테이블 이름이 맞습니까? PERSONS 또는 Employees와 같은 테이블 이름을 지정해야합니까?

SELECT * FROM Employee 

같은

SELECT * FROM [database] 

시도 뭔가가 작동하는 경우이 지금

SELECT Phone,FirstName,LastName,EmployeeID FROM [employees] 

, 그것은 Employees 테이블에있는 필드의 일종을 의미 시도하는 것은 처리 할 수없는 무언가이다. 위의 코드는 오류가 발생하기 때문에 Autonum 필드를 처리 할 수 ​​없다는 것을 의미합니다. 다음보십시오 :

SELECT Phone,FirstName,LastName,CAST(EmployeeID as INT) as EmployeeID 
     FROM [employees] 

그래, 데이터베이스 내 테이블의 이름입니다 완전히 INSERT SQL

InsertCommand="INSERT INTO [database] (Phone,FirstName,LastName) VALUES (@Phone,@FirstName,@LastName) " 
+0

떨어져 where 절을 복용하십시오. – chan

+1

그게 문제의 원인 일 수 있다고 생각합니다. 데이터베이스는 일반적으로 예약어입니다. 해당 테이블의 레코드를 다른 테이블로 복사하고 코드를 변경하여 새 테이블 이름을 참조 할 수 있습니까? 그게 작동한다면, 드라이버가 아마도 예약어에 걸려 넘어지고 있습니다 .... – Sparky

+0

당신이 제안한 Employees라는 새 테이블이 있는데도 오류가 발생합니다. – chan