tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
958
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    duukta duukta ist offline Rookie
    Registriert seit
    Sep 2008
    Beiträge
    6
    Ich fang mal an, hoffe hier bin ich richtig. Hab eine GridView mit "Header-Informationen". Wenn ich nen Datensatz auswähle, hätte ich gern, dass dazu dann detaillierte Informationen zu diesem Datensatz angezeigt werden. Allerdings bekomme ich immer folgende Fehlermeldung:

    Für die Prozedur oder Funktion proc_ShowTaskForCall wurden zu viele Argumente angegeben.

    Die DB Prozedur bekommt einen Input Parameter (ID) und dazu sollen dann die entsprechenden Detaildatensätze ausgegeben werden.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2"  
                                CellPadding="4" ForeColor="#333333" GridLines="Horizontal" BorderStyle="Groove" BorderWidth="2" BorderColor="#59A60C"  
                                DataKeyNames="SupportCallID" ShowFooter="True" 
                                OnSelectedIndexChanged="GridView2_SelectedIndexChanged" AllowPaging="True" AutoGenerateSelectButton="true">
                             <RowStyle  ForeColor="Black" />
                             <HeaderStyle BackColor="#66B849" ForeColor="White" Font-Bold="True" />
                             <AlternatingRowStyle BackColor="gray" VerticalAlign="Middle" />                      
                             <Columns>
                                  <asp:BoundField DataField="SupportCallID"  HeaderText="SupportCallID" SortExpression="SupportCallID" visible="false"/>
                                  <asp:BoundField DataField="Brief_Description" HeaderText="Brief Description" SortExpression="Brief Description" />
                                  <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
                                  <asp:BoundField DataField="COMPANYDID" HeaderText="Contact" SortExpression="Contact" />
                                  <asp:BoundField DataField="COMPANYID" HeaderText="Company" SortExpression="Company" />
                                  <asp:BoundField DataField="STATUSID" HeaderText="Status" SortExpression="Status" />
                                  <asp:BoundField DataField="PRIORITYID" HeaderText="Priority" SortExpression="Priority" />
                                  <asp:BoundField DataField="TYPEID" HeaderText="Type" SortExpression="Type" />
                                  <asp:CommandField SelectText="Select" UpdateText="Update" CancelText="Cancel" ShowEditButton="True" EditText="Edit" />
                             </Columns>                                        
                     </asp:GridView>
                     <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:scpmv3 %>"
                                SelectCommand="proc_OpenCalls" SelectCommandType="StoredProcedure"
                                UpdateCommand="update support_call
                                                set BRIEF_DESCRIPTION = @Brief_Description, 
                                                Description = @Description, 
                                                COMPANYDID = @COMPANYDID, 
                                                COMPANYID = @COMPANYID
                                                where SUPPORTCALLID = @supportcallid">
                             <UpdateParameters>
                                  <asp:Parameter Name="SupportCallID" Direction="Output"/>
                             </UpdateParameters>
                     </asp:SqlDataSource>
                     <asp:Label ID="SUPPORTCALLID" runat="server" Text=""></asp:Label>
                     <asp:Label ID="SUPPORTCALLDID" runat="server" Text=""></asp:Label>
                     <asp:Label ID="ACTION" runat="server" Text=""></asp:Label>
                     <asp:Label ID="TASK_CREATED" runat="server" Text=""></asp:Label>
                     <asp:Label ID="DATE_NEXT_ACTION" runat="server" Text=""></asp:Label>
                     <asp:Label ID="CALLREMIND" runat="server" Text=""></asp:Label>
                     <asp:Label ID="MESSAGE" runat="server" Text=""></asp:Label>

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    
    SqlParameter SUPPORTCALLID_SQL;
        SqlParameter SUPPORTCALLDID_SQL;
        SqlParameter ACTION_SQL;
        SqlParameter TASK_CREATED_SQL;
        SqlParameter DATE_NEXT_ACTION_SQL;
        SqlParameter CALLREMIND_SQL;
        SqlParameter MESSAGE_SQL;
     
     
        protected void Page_Load(object sender, EventArgs e)
        {
            conString = "server=(local);" +
                  "Trusted_Connection=yes; database=SCPMv3";
            con = new SqlConnection(conString);
     
        }
        protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
        {
           
            int index = GridView2.SelectedIndex;
            String SUPPORTCALLID = GridView2.DataKeys[index].Value.ToString();
            getDetails(SUPPORTCALLID);
        }
        protected void getDetails(String SUPPORTCALLID)
        {
            con.Open();
            command = new SqlCommand("proc_ShowTaskForCall", con);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@SUPPORTCALLID", SqlDbType.VarChar)).Value = SUPPORTCALLID;
     
     
            //Output-Parameters for the Detailed-View
     
            SUPPORTCALLID_SQL = command.Parameters.Add("@SUPPORTCALLID", SqlDbType.Int);
            SUPPORTCALLID_SQL.Direction = ParameterDirection.Output;
            SUPPORTCALLID_SQL.Size = 100;
     
            SUPPORTCALLDID_SQL = command.Parameters.Add("@SUPPORTCALLDID", SqlDbType.Int);
            SUPPORTCALLDID_SQL.Direction = ParameterDirection.Output;
            SUPPORTCALLDID_SQL.Size = 100;
     
            ACTION_SQL = command.Parameters.Add("@ACTION", SqlDbType.VarChar);
            ACTION_SQL.Direction = ParameterDirection.Output;
            ACTION_SQL.Size = 100;
     
            TASK_CREATED_SQL = command.Parameters.Add("@TASK_CREATED", SqlDbType.DateTime);
            TASK_CREATED_SQL.Direction = ParameterDirection.Output;
            TASK_CREATED_SQL.Size = 100;
     
            DATE_NEXT_ACTION_SQL = command.Parameters.Add("@DATE_NEXT_ACTION", SqlDbType.DateTime);
            DATE_NEXT_ACTION_SQL.Direction = ParameterDirection.Output;
            DATE_NEXT_ACTION_SQL.Size = 100;
     
            CALLREMIND_SQL = command.Parameters.Add("@CALLREMIND", SqlDbType.VarChar);
            CALLREMIND_SQL.Direction = ParameterDirection.Output;
            CALLREMIND_SQL.Size = 1;
     
            MESSAGE_SQL = command.Parameters.Add("@MESSAGE", SqlDbType.VarChar);
            MESSAGE_SQL.Direction = ParameterDirection.Output;
            MESSAGE_SQL.Size = 200;
     
            command.ExecuteNonQuery();
            con.Close();

    Hier sind mal die Codeausschnitte. Hab ich hier nen grundsätzlichen Denkfehler oder ist mein Lösungsansatz so ok? Wenn ja, wo kann der Fehler genau sein? Bin immer noch in der Anfangs- und Probierphase, nutze deshalb immer Codeausschnitte anderer und versuche mir daraus "meins" zu basteln

    Evtl. weiss ja jemand von euch auf Anhieb, wo ich nen Fehler gemacht habe. Aber bitte nicht gleich steinigen
    Danke.
    Gruss
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Schon mal angesehen, was in SUPPORTCALLID genau drinnen steht? Und wird dieser Parameter tatsächlich als varchar behandelt?
     

  3. #3
    duukta duukta ist offline Rookie
    Registriert seit
    Sep 2008
    Beiträge
    6
    Hi,
    Manchmal sieht man vor lauter Bäumen den Wald nicht mehr.

    Mein Fehler war, dass ich davon ausgegangen bin, dass das Ergebnis der Prozedur "einfach so" an meine Oberfläche weiter gegeben wird. Doch muss ich die Werte nicht nur in der Select Anweisung definieren, sondern selber auch nochmal als Output Parameter. Eigentlich sehr simple

    Gruss
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 13.01.11, 08:43
  2. Antworten: 1
    Letzter Beitrag: 01.09.06, 21:10
  3. [Oracle 9 PL/SQL] Wie stelle ich in einer Funktion/Prozedur eine Tabelle dar?
    Von Basti54 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 05.05.05, 19:20
  4. in trigger oder prozedur delete anweisung
    Von Schrumpel im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 04.10.03, 14:25
  5. Prozedur / Funktion
    Von Morpheus im Forum Visual Basic 6.0
    Antworten: 9
    Letzter Beitrag: 22.01.03, 12:55