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
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
PROBLEMA CON SQLDATADAPTER
mercoledì 19 agosto 2009 - 12.03
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
2001gabry
Profilo
| Newbie
3
messaggi | Data Invio:
mer 19 ago 2009 - 12:03
Salve a tutti, cerco di esporre il mio problema:
Ho un'applicazione scritta in vb.net che fa una select semplice su una tabella
restituisce il risultato della select in un datatable il quale è il datasource di una datagrid
Il Database era su un sql2000, e fin qui tutto bene.
Qualche giorno fa ho migrato il db da sql2000 a sql2005.
ora la stessa select genera un errore sul metodo fill del sqldataadapter generando un'eccezione del tipo
CONSTRAINT.EXCEPTION.
Qui di sotto il codice che prima funzionava e ora non piu'.
' c_sql è la mia select
'db è la connessione al database
'Tb è il data table
Dim ad As New SqlDataAdapter
ad.SelectCommand = New SqlCommand(c_Sql, Db)
ad.MissingSchemaAction = MissingSchemaAction.AddWithKey
Tb.Clear()
ad.Fill(Tb) ----> qui ora avviene l'eccezione
ad.Dispose()
Db.Close()
Per ora ho gestito l'errore eliminando ad.MissingSchemaAction = MissingSchemaAction.AddWithKey
ma non mi piace in quanto nel datatable non ho piu' le informazioni delle chiavi.
Qualcuno sa aiutarmi in modo da risolvere il problema recuperando nuovamente le informazioni delle chiavi ?
grazie
Spero di essere stato chiaro
gabriele
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 19 ago 2009 - 14:23
>ora la stessa select genera un errore sul metodo fill del sqldataadapter
>generando un'eccezione del tipo
>CONSTRAINT.EXCEPTION.
Ciao Gabriele,
Puoi postare il comando di SELECT, i comandi di CREATE TABLE delle tabelle coinvolte complete di constraints ed il nome del constraint che viene vìolato?
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
2001gabry
Profilo
| Newbie
3
messaggi | Data Invio:
mer 19 ago 2009 - 16:47
grazie per la risposta.
questa e' una delle select che da il problema.
Select BATCH,DATAB,MAGA,STATO,TSPE,ORDI,SUM(QTAPR) AS CAPI FROM PRELIEVI WHERE REPAR='RE' AND STATO<>'C' and STATO<>'X' GROUP BY TSPE,BATCH,DATAB,MAGA,STATO,ORDI ORDER BY TSPE,ORDI,BATCH,DATAB,MAGA,STATO
create table:
USE [MAGPOLL]
GO
/****** Object: Table [dbo].[PRELIEVI] Script Date: 08/19/2009 16:45:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[PRELIEVI](
[Batch] [varchar](3) NOT NULL,
[Repar] [char](2) NOT NULL,
[VIAG] [char](5) NOT NULL,
[DataB] [char](8) NOT NULL,
[CLIE] [char](5) NOT NULL CONSTRAINT [DF_PRELIEVI_CLIE] DEFAULT (''),
[NUSK] [char](4) NOT NULL CONSTRAINT [DF_PRELIEVI_NUSK] DEFAULT (''),
[STAG] [char](2) NOT NULL,
[MODE] [char](6) NOT NULL,
[TESS] [char](4) NOT NULL,
[VRNT] [char](2) NOT NULL,
[TORD] [char](4) NOT NULL CONSTRAINT [DF_PRELIEVI_TORD] DEFAULT (''),
[TPOS] [char](1) NOT NULL,
[NCOL] [char](6) NOT NULL,
[QtaPr] [int] NOT NULL,
[TSPE] [char](1) NOT NULL,
[COLZ] [char](3) NOT NULL CONSTRAINT [DF_PRELIEVI_COLZ] DEFAULT (''),
[MAGA] [int] NOT NULL,
[PIAN] [int] NOT NULL,
[FILA] [int] NOT NULL,
[POSI] [int] NOT NULL,
[LIVE] [int] NOT NULL,
[Corsi] [int] NOT NULL,
[Stato] [char](1) NOT NULL,
[Opera] [char](10) NOT NULL,
[Term] [int] NOT NULL CONSTRAINT [DF_PRELIEVI_Term] DEFAULT (0),
[Ordi] [char](60) NOT NULL CONSTRAINT [DF_PRELIEVI_Ordi] DEFAULT (''),
[BKIT] [char](12) NOT NULL CONSTRAINT [DF_PRELIEVI_BKIT] DEFAULT (''),
CONSTRAINT [PK_PRELIEVI] PRIMARY KEY CLUSTERED
(
[Batch] ASC,
[DataB] ASC,
[CLIE] ASC,
[NUSK] ASC,
[STAG] ASC,
[MODE] ASC,
[TESS] ASC,
[VRNT] ASC,
[TORD] ASC,
[TPOS] ASC,
[NCOL] ASC,
[MAGA] ASC,
[PIAN] ASC,
[FILA] ASC,
[POSI] ASC,
[LIVE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
questo è il messaggio di errore:
Impossibile attivare i vincoli. Una o più righe contengono valori che violano il vincolo non-null, unique o foreign-key.
grazie ancora
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 19 ago 2009 - 16:59
>questa e' una delle select che da il problema.
>
>Select BATCH,DATAB,MAGA,STATO,TSPE,ORDI,SUM(QTAPR) AS CAPI FROM
>PRELIEVI WHERE REPAR='RE' AND STATO<>'C' and STATO<>'X'
>GROUP BY TSPE,BATCH,DATAB,MAGA,STATO,ORDI ORDER BY TSPE,ORDI,BATCH,DATAB,MAGA,STATO
>
>
>create table:
...
> CONSTRAINT [PK_PRELIEVI] PRIMARY KEY CLUSTERED
>(
> [Batch] ASC,
> [DataB] ASC,
> [CLIE] ASC,
> [NUSK] ASC,
> [STAG] ASC,
> [MODE] ASC,
> [TESS] ASC,
> [VRNT] ASC,
> [TORD] ASC,
> [TPOS] ASC,
> [NCOL] ASC,
> [MAGA] ASC,
> [PIAN] ASC,
> [FILA] ASC,
> [POSI] ASC,
> [LIVE] ASC
...
>
>questo è il messaggio di errore:
>Impossibile attivare i vincoli. Una o più righe contengono valori
>che violano il vincolo non-null, unique o foreign-key.
La PK in sostanza è l'unico constraint sulla tabella PRELIEVI che potrebbe causare il problema.
La select list, però, non contiene l'intera PK, quindi non capisco che senso abbia aggiungere una "PK monca" al DataSet che potrebbe portare a valori duplicati e quindi alla violazione del constraint.
>grazie ancora
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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 !