Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Errore alla lettura di un db con piu di 1 record
martedì 18 maggio 2010 - 14.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
basicdany
Profilo
| Expert
590
messaggi | Data Invio:
mar 18 mag 2010 - 14:56
CIao, a tutti eseguo la lettura di un db sql server contenente una tabella di nome fotoimmobili, in base a idiimmobile, se trova un record visualizza
la foto senza problemi in un gridview se ci sono piu di un record, genera questo errore:
Impossibile attivare i vincoli. Una o più righe contengono valori che violano il vincolo non-null, unique o foreign-key.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.
Dettagli eccezione: System.Data.ConstraintException: Impossibile attivare i vincoli. Una o più righe contengono valori che violano il vincolo non-null, unique o foreign-key.
Errore nel codice sorgente:
Riga 1355: Me.Adapter.SelectCommand.Parameters(0).Value = CType(ID,Integer)
Riga 1356: Dim dataTable As ElencoImmobili.QDettagliGPDataTable = New ElencoImmobili.QDettagliGPDataTable
Riga 1357: Me.Adapter.Fill(dataTable)
Riga 1358: Return dataTable
Riga 1359: End Function
la griglia e imposta cosi:
<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
DataKeyNames="IdImmobile" AutoGenerateColumns="False"
DataSourceID="ObjectDataSourceFoto" CellPadding="4" ForeColor="#333333"
GridLines="None">
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<Columns>
<asp:BoundField DataField="Descrizione" />
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# "~/ImageGrabber.ashx?IdImmobile=" & Eval("IdImmobile") %>' />
</ItemTemplate>
<ControlStyle Height="200px" Width="200px" />
</asp:TemplateField></Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
questa e la classe ImageGrabber.ashx dove viene passato id al click sulla griglia da una pagina precedente a questa:
public class ImageGrabber : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
// Grab the comic ID from the query string and validate it
string id = context.Request["IdImmobile"];
if (String.IsNullOrEmpty (id))
return;
int ComicID = -1;
try {
ComicID = Convert.ToInt32 (id);
}
catch (FormatException) {
return;
}
// Check for the image in the application cache
string key = ComicID.ToString ();
byte[] image = (byte[]) context.Cache[key];
// If the image isn't in the cache, get it from the database
if (image == null) {
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["GestioneVenditaImmobileSqlConnectionString"].ConnectionString);
try
{
connection.Open();
//SqlCommand command = new SqlCommand("SELECT Foto FROM ImmobileFoto WHERE IdImmobile=@IdImmobile", connection);
//command.Parameters.Add("@IdImmobile", SqlDbType.SmallInt).Value = ComicID;
//image = (byte[]) command.ExecuteScalar ();
string sql = "Select Foto from ImmobileFoto where IdImmobile=@IdImmobile";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.Parameters.Add("@IdImmobile", SqlDbType.Int).Value = Convert.ToInt32(context.Request.QueryString["IdImmobile"]);
cmd.Prepare();
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
context.Response.ContentType = "jpeg";//dr["Image_Type"].ToString();
context.Response.BinaryWrite((byte[])dr["Foto"]);
// Cache the image and include a SqlCacheDependency
}
finally
{
connection.Close();
}
}
// Return the image in the HTTP response
if (image != null) {
context.Response.ContentType = "image/jpeg";
context.Response.OutputStream.Write (image, 0, image.Length);
}
}
public bool IsReusable
{
get { return false; }
}
}
LA TABELLA UTILIZZATA NON HA RELAZIONI.
CIAO GRAZIE A TUTTI
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 18 mag 2010 - 15:00
>CIao,
Ciao
>a tutti eseguo la lettura di un db sql server contenente
>una tabella di nome fotoimmobili, in base a idiimmobile, se trova
>un record visualizza la foto senza problemi in un gridview se ci sono piu di un record,
>genera questo errore:
>
>
>Impossibile attivare i vincoli. Una o più righe contengono valori
>che violano il vincolo non-null, unique o foreign-key.
com'è definito il datatable? perchè se il datatable non ha l'attributo nullable sulle colonne, un record con un valore null in uno dei suoi campi solleva quell'errore.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
basicdany
Profilo
| Expert
590
messaggi | Data Invio:
mar 18 mag 2010 - 16:41
Ciao, ho realizzato un dataset tipizzato con questa query:
SELECT IdImmobile, Foto, Descrizione, FotoPrima FROM ImmobileFoto WHERE (IdImmobile = @ID)
e collegato un datasource al dataset
<asp:ObjectDataSource ID="ObjectDataSourceFoto" runat="server"
OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
TypeName="ElencoImmobiliTableAdapters.ImmobileFotoTableAdapter">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="ID" QueryStringField="ID"
Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
e infine come ti dicevo prima la gridview al datasurce?
La tabella che uso non e lagata a nessun altra tabella, non capisco?
ciao grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 18 mag 2010 - 17:54
>La tabella che uso non e lagata a nessun altra tabella, non capisco?
ehm.. hai accettato, quindi hai risolto?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
basicdany
Profilo
| Expert
590
messaggi | Data Invio:
mar 18 mag 2010 - 21:08
Ciao ti ho gia accettato la risposta pero il problema non lo risolto ti
spiego,
nella pagina in questione ci sono 2 datasource che hanno come parametro
dall'altra pagina :
Response.Redirect("Dettagli.aspx?IDFoto=" & GridView1.SelectedValue.ToString)
quindi nella pagina:
-un data source riempi una dettalsview che prende i dati da una tabella ed e
sempre un solo record
-altro datasource che prende i dati da un altra tabella, quando i record sono
piu di uno si genera l'errore!, ho provato ha usare solo questo dataosurce e
FUNZIONA MI CARICA
TUTTE LE FOTO CHE LEGGE DAL DB
Pensavo di risolvere passando 2 parametri indipendenti in quest amaniera:
Response.Redirect("Dettagli.aspx?IDFoto=" & GridView1.SelectedValue.ToString)
Response.Redirect("Dettagli.aspx?IDdettagli=" & GridView1.SelectedValue.
ToString)
, ma ho visto che esegue solo il primo l'altro no:
ciao grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 24 mag 2010 - 13:32
>, ma ho visto che esegue solo il primo l'altro no:
fammi capire, il primo detailsview funziona sempre. Giusto?
l'altro invece ti restituisce l'errore di relazione??
Perdonami ma senza vedere il codice faccio fatica a capire il tuo problema, puoi provare a spiegarti un po' meglio con un po' di codice magari?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !