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
Controllo record già inserito
martedì 28 ottobre 2008 - 10.51
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
bolla111
Profilo
| Senior Member
293
messaggi | Data Invio:
mar 28 ott 2008 - 10:51
voglio fare una query che mi controlli se un record è già stato inserito...
ho provato ad usare questa:
SELECT count(IDPROD) FROM DETTAGLI INNER JOIN PRODOTTI ON DETTAGLI.IDPROD=PRODOTTI.ID WHERE DETID=@DETID AND DETID2=@DETID2 AND ID=@ID".
DETID e DETID2 è la chiave primaria della tabella dettagli. IDPRODè chiave esterna.
quindi conto quanti prodotti sono inseriti nella tabella dettagli, che hanno come DETID un valore che gli passo (è uguale x tutti nel mio caso), come DETID2 un valore progressivo e come ID quello che gli vado ad inserire.
se il conteggio è = 0 il rpogramma continua, se è =1 mi fermo. il fatto è che questa query mi conta tutti i dettagli, anche se inserisco un prodotto che non ho ancora inserito (quindi un diverso id)...dove sbaglio?
oppure c'è un altro modo x farlo?
grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 28 ott 2008 - 12:32
>dove sbaglio?
Che DBMS utilizzi?
Puoi postare i comandi di CREATE TABLE delle tabelle, alcune righe di prova ed il risultato che vorresti ottenere con quei dati?
>grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
bolla111
Profilo
| Senior Member
293
messaggi | Data Invio:
mar 28 ott 2008 - 12:49
uso ms sqlserver
di posso postare il codice lato server che uso x fare inserimento / modifica... cmq è la query che non fa quello che voglio...
'Bottone Salva
Protected Sub ButtonSalva_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonSalva.Click
Dim contr As Integer = 0
'Controllo inserimento quantità
Dim qtacorretta As Boolean = True
Try
Dim qta As Integer = CInt(TextDAQTA.Text)
Dim prod As Integer = CInt(TextPRID.Text)
qtacorretta = True
Catch ex As Exception
qtacorretta = False
End Try
If (qtacorretta) Then
connn = New SqlClient.SqlConnection("Server=APPLE-XP\SQLEXPRESS;Database=Attivita;Trusted_Connection=True;Integrated Security=True")
connn.Open()
Dim SqlIns As String = ""
If DTLAGGMOD.Text = "INSERIMENTO" Then
'§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
'Imposta il Progressivo
TextDAID.Text = GetNextDAID()
'§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
'Controllo inserimento prodotto già esistente nella tabella delasstask
Dim Sqlcontr As String = ""
Sqlcontr = "SELECT count(DAPRID) FROM DTLASSTASK INNER JOIN ESPRODOTTI ON DTLASSTASK.DAPRID=ESPRODOTTI.PRID WHERE TAID=@TAID AND DAID=@DAID AND PRID=@PRID"
Dim getcount As SqlClient.SqlCommand
getcount = New SqlCommand(Sqlcontr, connn)
getcount.Parameters.Add("TAID", SqlDbType.Decimal)
getcount.Parameters("TAID").Value = CInt(TextTAID.Text)
getcount.Parameters.Add("DAID", SqlDbType.Decimal)
getcount.Parameters("DAID").Value = CInt(TextDAID.Text)
getcount.Parameters.Add("PRID", SqlDbType.Decimal)
getcount.Parameters("PRID").Value = CInt(TextPRID.Text)
Dim ds As SqlDataReader
ds = getcount.ExecuteReader
If ds.HasRows Then
Try
contr = 1
Catch ex As Exception
contr = 0
End Try
End If
poi c'è tutto il pezzo con la query x l'insert è quella x l'update...ma non è necessario postarla
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 28 ott 2008 - 12:51
>uso ms sqlserver
Bene.
>poi c'è tutto il pezzo con la query x l'insert è quella x l'update...ma
>non è necessario postarla
Certo, non è necessario, ma io ti ho chiesto un'altra cosa:
Puoi postare i comandi di CREATE TABLE delle tabelle, alcune righe di prova ed il risultato che vorresti ottenere con quei dati?
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
bolla111
Profilo
| Senior Member
293
messaggi | Data Invio:
mar 28 ott 2008 - 13:14
non uso comandi create table...le tabelle le ho create direttamete da ms sql server
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 28 ott 2008 - 14:25
>non uso comandi create table...le tabelle le ho create direttamete
>da ms sql server
OK, ma a noi servono i comandi per riprodurre la situazione.
Genera gli script da Enterprise Manager/SQL Server Management Studio e postali insieme ad una manciata di INSERT, e facci un esempio chiaro del risultato che vorresti ottenere con quei dati.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
bolla111
Profilo
| Senior Member
293
messaggi | Data Invio:
mer 29 ott 2008 - 12:24
ho risolto...invece si select count(valore) ho fatto una select normale e non ho utilizzato il secondo campo chiave(il progressivo)
grazie cmq...
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 29 ott 2008 - 12:48
>ho risolto...invece si select count(valore) ho fatto una select
>normale e non ho utilizzato il secondo campo chiave(il progressivo)
Occhio che eseguire una aggregazione solo per valutare l'esistenza o meno di una riga, non è una scelta furba
Probabilmente otterresti prestazioni superiori utilizzando una IF EXISTS(SELECT * FROM...)
>grazie cmq...
Prego cmq...
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
bolla111
Profilo
| Senior Member
293
messaggi | Data Invio:
mer 29 ott 2008 - 13:29
beh...proverò anche quella...ciao
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 !