6 messaggi dal 24 marzo 2013
Salve, sono alle prese con un nuovo problema con il codice seguente:
***************
<%@ Page Language="VB" Debug="true" %>
<!DOCTYPE html>
<script runat="server">

</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<link rel="stylesheet" href="css/tosa.css" type="text/css">
</head>
<body>
<form id="form1" runat="server">
<div>

</div>
<asp:SqlDataSource ID="SqlDataSourceManual" runat="server" ConnectionString="<%$ ConnectionStrings:connIntranet %>" ProviderName="<%$ ConnectionStrings:connIntranet.ProviderName %>"
SelectCommand="SELECT v_Ded_bom.P, v_Ded_bom.F, v_Ded_bom.Q, traduzioni_codici.IDtrad, traduzioni_codici.italiano, traduzioni_codici.inglese, traduzioni_codici.tedesco, traduzioni_codici.spagnolo, traduzioni_codici.francese, traduzioni_codici.IDtrad, v_DED_DATA.DESCRIZION FROM v_Ded_bom LEFT OUTER JOIN v_DED_DATA ON v_Ded_bom.F = v_DED_DATA.DED_COD LEFT OUTER JOIN traduzioni_codici ON v_Ded_bom.F = traduzioni_codici.codice WHERE (v_Ded_bom.P = ?)"
UpdateCommand="IF EXISTS (SELECT * FROM traduzioni_codici WHERE codice= codice) UPDATE traduzioni_codici SET italiano =?, inglese =?, tedesco =?, spagnolo =?, francese =? WHERE codice = ?
ELSE
UPDATE traduzioni_codici SET italiano =?, inglese =?, tedesco =?, spagnolo =?, francese =? WHERE codice = ? ">
<SelectParameters>
<asp:ControlParameter ControlID="codice" Name="P" PropertyName="Text" Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:ControlParameter ControlID="codice" Name="F" PropertyName="Text" Type="String" />
</UpdateParameters>

</asp:SqlDataSource>

<span class="testo">INSERIRE CODICE : </span><asp:TextBox ID="codice" runat="server"></asp:TextBox>

<asp:GridView ID="GridViewManual" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="F" DataSourceID="SqlDataSourceManual" ForeColor="Black" GridLines="Vertical" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CssClass="testo" OnSelectedIndexChanging="prova" >
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="IDtrad" HeaderText="IDtrad" Visible="false" />
<asp:BoundField DataField="P" HeaderText="TAV / RIF" ReadOnly="true" />
<asp:BoundField DataField="italiano" HeaderText="DESCRIZIONE" />
<asp:BoundField DataField="inglese" HeaderText="DESCRIPTION-EN" />
<asp:BoundField DataField="tedesco" HeaderText="DESCRIPTION-DE" />
<asp:BoundField DataField="spagnolo" HeaderText="DESCRIPTION-ES" />
<asp:BoundField DataField="francese" HeaderText="DESCRIPTION-FR" />
<asp:BoundField DataField="Q" HeaderText="Q.TY" ReadOnly="true" />
<asp:BoundField DataField="F" HeaderText="CODICE / CODE" />
<asp:BoundField DataField="DESCRIZION" HeaderText="DESCRIZIONE COMPLETA" ReadOnly="true" />
</Columns>
<FooterStyle BackColor="#CCCC99" />
<HeaderStyle BackColor="#008800" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
<RowStyle BackColor="#ECFFEC" />
</asp:GridView>
</form>
</body>
</html>
**************
In pratica dovrei verificare l'esistenza del record selezionato nella gridView e se esistente modificarlo altrimenti inserire un nuovo record. Purtroppo la query UPDATE mi restituisce un errore ("Nessun valore specificato per alcuni parametri necessari."), se la elimino il tutto funziona se non fosse che in realtà il controllo IF EXISTS sembra restituire una select valida (se gli forzo nella select WHERE codice= 'un record che sicuramente non esiste' allora esegue l'ELSE).
Grazie in anticipo per l'aiuto.....
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

potter68 ha scritto:

"Nessun valore specificato per alcuni parametri necessari."

A prescindere da quale sia il tuo UpdateCommand, penso che questo errore si verifichi perché il SqlDataSource non sa cosa andare a sostituire ai punti interrogativi, dato che hai indicato un solo UpdateParameter. Se stai usando SqlServer, prova ad usare dei [i]named parameters, vedi se così si risolve.

UpdateCommand="IF EXISTS (SELECT * FROM traduzioni_codici WHERE codice=@codice) UPDATE traduzioni_codici SET italiano=@italiano, inglese=@inglese, tedesco=@tedesco, spagnolo=@spagnolo, francese=@francese WHERE codice=@codice
ELSE
INSERT INTO traduzioni_codici (codice, italiano, inglese, tedesco, spagnolo, francese) VALUES (@codice, @italiano, @inglese, @tedesco, @spagnolo, @francese)"

Ho cambiato la UPDATE che si trovava dopo l'ELSE in INSERT. Immagino che tu voglia inserire il record se non presente nel database...

Qui trovi altri spunti.
http://msdn.microsoft.com/en-us/library/z72eefad.aspx
L'uso del punto interrogativo come segnaposto posizionale è necessario solo se stabilisci una connessione OleDb o Odbc al database.

ciao,
Moreno
Modificato da BrightSoul il 03 marzo 2014 20.37 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.