Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > ERROR [07002]


Автор: Nicson 21.3.2006, 00:45
Доброго времени суток.

Может кто сталкивался с такой проблемой. Есть gridview s dropdown листом:

Код
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
        <b>Izvelet sistemu</b>&nbsp
        <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2" DataTextField="Statuss" AutoPostBack="true">
        </asp:DropDownList>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:DUS_ProblemuRegistrs_DB %>" ProviderName="<%$ ConnectionStrings:DUS_ProblemuRegistrs_DB.ProviderName %>" SelectCommand="SELECT DISTINCT [Statuss] FROM [Slodze]"></asp:SqlDataSource>
        <br/>
        <br/>
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1" Height="50px" Width="900px" AlternatingRowStyle-HorizontalAlign="Center" AlternatingRowStyle-VerticalAlign="Top" AlternatingRowStyle-Width="60" EditRowStyle-Height="50" EditRowStyle-HorizontalAlign="Center" EditRowStyle-VerticalAlign="Middle" EditRowStyle-Width="70" EditRowStyle-Wrap="false" EmptyDataRowStyle-Height="70" EmptyDataRowStyle-HorizontalAlign="Center" EmptyDataRowStyle-VerticalAlign="Middle" HorizontalAlign="Center" AlternatingRowStyle-Wrap="false" PagerStyle-HorizontalAlign="Center" RowStyle-HorizontalAlign="Center">
            <Columns>
                <asp:CommandField ShowSelectButton="True" SelectText="Apskatit" />
                <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True"
                    SortExpression="ID" />
                <asp:BoundField DataField="Veicejs" HeaderText="Veicejs" SortExpression="Veicejs" />
                <asp:BoundField DataField="Nosaukums" HeaderText="Nosaukums" SortExpression="Nosaukums" ControlStyle-BorderWidth="50" />
                <asp:BoundField DataField="Sakuma_laiks" HeaderText="Sakuma_laiks" SortExpression="Sakuma_laiks" />
                <asp:BoundField DataField="Sistema" HeaderText="Sistema" SortExpression="Sistema" />
                <asp:BoundField DataField="Statuss" HeaderText="Statuss" SortExpression="Statuss" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DUS_ProblemuRegistrs_DB %>" ProviderName="<%$ ConnectionStrings:DUS_ProblemuRegistrs_DB.ProviderName %>" SelectCommand="SELECT [ID], [Veicejs], [Nosaukums], [Sakuma_laiks], [Sistema], [Statuss] FROM [Slodze] WHERE ([Darbs] = 12) AND ([Apaksdarbs] = 67) AND ([Statuss] = @Statuss)">
        <SelectParameters>
        <asp:ControlParameter Name="Statuss" ControlID="DropDownList1" />
        </SelectParameters>
        </asp:SqlDataSource>
        &nbsp; &nbsp;&nbsp;    
    </form>
</body>
</html>


Ошибок нет, но при исполнении выкидивает:

Код
ERROR [07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.Odbc.OdbcException: ERROR [07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[OdbcException (0x80131937): ERROR [07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.]
   System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) +80
   System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod) +3341
   System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader) +91
   System.Data.Odbc.OdbcCommand.ExecuteReader(CommandBehavior behavior) +72
   System.Data.Odbc.OdbcCommand.ExecuteDbDataReader(CommandBehavior behavior) +29
   System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +32
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +183
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +307
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +152
   System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +2868
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +84
   System.Web.UI.WebControls.DataBoundControl.PerformSelect() +153
   System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +99
   System.Web.UI.WebControls.GridView.DataBind() +23
   System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +92
   System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +100
   System.Web.UI.Control.EnsureChildControls() +134
   System.Web.UI.Control.PreRenderRecursiveInternal() +109
   System.Web.UI.Control.PreRenderRecursiveInternal() +233
   System.Web.UI.Control.PreRenderRecursiveInternal() +233
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4435
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42 


Если в SqlDataSource1 меняю последнее условие запроса с ([Statuss] = @Statuss) на ([Statuss] = 2) т.е. ставлю не параметр фильтра из DropDownList а фиксированное значение - все работает в смысле значения выводятся, но естественно никакой связи с DropDownList нет. Выходит проблема в этом @Statuss, но почему? Во всех примерах которые нашел все именно так и описывается....

Автор: Exception 21.3.2006, 18:07
А почему мы к БД Access коннектимся через SqlDataSource? AccessDataSource рулит.

Автор: Exception 21.3.2006, 19:06
Модератор: пожалуйста, используйте теги для кода!
Модератор: перемещено из VB .NET

Автор: Nicson 21.3.2006, 20:13
Цитата(Exception @ 21.3.2006, 18:07)
А почему мы к БД Access коннектимся через SqlDataSource? AccessDataSource рулит.

В этом причина проблемы?

Автор: Exception 21.3.2006, 20:33
Не знаю, не проверял. Хотя к базе вроде он коннектится.. Попробуй все равно.

Автор: mr.DUDA 21.3.2006, 20:48
Цитата(Nicson @ 21.3.2006, 19:13 Найти цитируемый пост)
В этом причина проблемы?

Похоже, причина проблемы в том что не определено значение параметра @Statuss, так ИМХО обозначаются параметры, передаваемые в хранимую процедуру (в Access есть свой аналог хранимых процедур - QueryDef). Если бы разбирался в ASP.NET, посоветовал бы что-нить, но... smile

Автор: Exception 21.3.2006, 21:35
Дык они вроде задаются в SelectParameters.. Поэтому и странно, что код его не "видит". Попробуй поменять на AccessDataSource.

Автор: mr.DUDA 22.3.2006, 08:32
А если так:
Код

<asp:ControlParameter Name="Statuss" ControlID="DropDownList1" propertyname="SelectedValue" />

?

Автор: Exception 22.3.2006, 09:27
Похоже на то.

Автор: Nicson 22.3.2006, 18:35
Dobavil propertyname="SelectedValue" ni4ego ne pomenalos soobscenie ob osibke takoeze. smile(

Mne na drugom forume otvetili:

Очевидно при первом запросе страницы DropDownList1.SelectedValue у тебя пустой - вот и вылетает второй запрос. Разреши пустые значения для параметра Statuss

Tolko kak i gde razresit eti pustie zna4enija celovek napisavsij eto govorit ne pomnit. Ne ponimaju... V ControlParameter est parametr DefaultValue poproboval ego ustanovit opat ni4ego ne pomenalos. Mne etot kusok koda uze snitsa v kosmarnih snah smile Poprobuju cerez AccessDataSource esli ne polucitsa daze i ne znaju 4e delat. A mozet bit s ODBC driverom 4ego-nit neto? S drugoj storoni esli ubiraju v selekte AND Slodze.Statuss = @Statuss dannie vibirajutsa korektno zna4it vse dolzno rabotat. Mozet kto esce 4e posovetuet.... smile

Автор: mr.DUDA 22.3.2006, 19:10
Nicson, под смайликами есть чекбокс "транслит"...

Автор: arilou 24.3.2006, 12:50
Цитата(Nicson @ 22.3.2006, 18:35 Найти цитируемый пост)
Очевидно при первом запросе страницы DropDownList1.SelectedValue у тебя пустой - вот и вылетает второй запрос

Человек дело говорит. Как разрешить, я не знаю, но есть другой вариант - в случае, если SelectedValue пустой, подставлять в значение параметра System.DBNull.Value.

Автор: Nicson 25.3.2006, 14:22
Попробовал с AccessDataSource и с темже GridView все работает как надо, без установки каких либо параметров, может дело и не в них.... Но насколько я понимаю база для AccessDataSource должна быть расположена внутри директории сайта, или не обязательно? У меня web сервер на одной машине, а база на другой можно в этом случае использовать AccessDataSource или без SqlDataSource не обойтись?

Автор: arilou 27.3.2006, 00:14
Nicson, AccessDataSource используется для доступа к БД Access, а SqlDataSource - к MS SQL Server. Это разные вещи, но отличаются они отнюдь не расположением БД smile
Дла Аскеса в принципе все равно, где расположен файл с БД. Главное, чтобы туда был доступ (если на другом компе, то через network share).

Автор: Nicson 28.3.2006, 20:51
Но я ведь работал с базой через ODBC, так что всё должно было работать....

Автор: Exception 28.3.2006, 20:57
В чем проблема? AccessDataSource работает или нет?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)