|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2006
Messaggi: 502
|
VB Problemi rognosi query parametriche e bindingnavigator.. help ç_ç
Ragazzi sono veramente in crisi.. son giorni che cerco di trovare soluzione a due problemi:
1° Problema) Orario Spiego meglio cmdDB.CommandText = "INSERT INTO [CronologiaEventi] (Data) VALUES ('" & Date.Today() & "')" 'ho messo date.today perchè mi accetta solo quello con il seguente risultato, che nella colonna riguardante l'ora mi scrive 12/10/2009 0.00.00 .. in pratica non salva l'ora. Ora ho provato a fare come molti forum consigliano: query parametriche, ecco il codice : cmdDB.CommandText = "INSERT INTO [CronologiaEventi] (Data) VALUES ('" & "@data" &"')" cmdDB.Parameters.Add("@data", SqlDbType.DateTime).Value = date.now() E mi da questo errore: " Conversione non riuscita durante la conversione di una stringa di caratteri nel tipo di dati datetime." Ragazzi ho provato di tutto aiutatemi.. 2° Problema) BindingNavigator ![]() Spiego meglio: Ho due tabelle come potete vedere nell'immagine di sopra con una relazione uno a molti tra di loro. Ora io vorrei visualizzare tramite un bindingNavigator i dati della seconda tabella però non tutti solo quelli con una determinata condizione ovvero con ad esempio il valore 3 della seconda colonna quindi in quel caso avrei 3 record da visualizzare in delle textbox e spostarmi da un record all altro tramite il binding.. ora vi posto il codice che ho scritto io che ho preso da un forum e che ho elaborato per me: Dim connectString As String = "Data Source=KEY\SQLEXPRESS;Initial Catalog=PinnaMag;Integrated Security=True" Qua imposta la connessione al database Dim connection As New SqlConnection() connection.ConnectionString = connectString connection.Open() ' Eseguo la query Dim command As New SqlCommand("Select Id_Magazzino From MagaAttuale WHERE Cod_Prodotto =1", connection) Dim reade As SqlDataReader = command.ExecuteReader() ' Carico i dati nel database.. Me.ds.Load(reade, LoadOption.OverwriteChanges, New String() {"MagaAttuale"}) BindingNavigator1.BindingSource = bs E infine assegno il bindingsource al binding navigator.. Il risultato è una ciofeca, nel senso che il programma si avvia ma nel binding navigator mi dà solo un valore da scorrere e le caselle con cui dovrei visualizzare il tutto non vanno.. dove ho sbagliato? se potete aiutatemi.. se no abbandono il bindingnavigator e faccio tutto a mano -.- . Grazie saluti |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Codice:
cmdDB.CommandText = "INSERT INTO nomeTabella ( Data ) VALUES ( @data )" |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2006
Messaggi: 502
|
Se faccio come hai detto te mi da errore e mi dice "Dichiarare la variabile scalare "@data"."
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Comunque io i Named Parameters li gestisco così, e non ho mai avuto problemi. Un esempio : Codice:
Dim strCN As String = "Data Source=nomeMacchina\SQLEXPRESS;Initial Catalog=nomeDB;Integrated Security=SSPI;"
Dim CN As New SqlClient.SqlConnection(strCN)
Dim strSql As String = "INSERT INTO nomeTabella (id, nome, data) VALUES ( @id, @nome, @data )"
Dim CMD As New SqlClient.SqlCommand(strSql, CN)
CMD.Parameters.Add("@id", SqlDbType.Int).Value = <valore>
CMD.Parameters.Add("@nome", SqlDbType.VarChar).Value = <"valore">
CMD.Parameters.Add("@data", SqlDbType.DateTime).Value = <valore>
CN.Open()
CMD.ExecuteNonQuery()
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2006
Messaggi: 502
|
ecco il mio codice conseguente al tuo..
cmdDB.CommandText = "INSERT INTO [CronologiaEventi] (Id_Maga,Azione,Data,Operatore) VALUES ('" & idmaga & "','" & "Aggiunta" & "',@data,'" & idPersona & "')" cmdDB.Parameters.Add("@data", SqlDbType.DateTime).Value = "10/03/2009 12.11.10" Dim cmdDBC As New SqlClient.SqlCommand(cmdDB.CommandText, connDB) cmdDBC.ExecuteNonQuery() PROBLEMA: dichiarare variabile scalare @data.. fai te Ultima modifica di KeySim : 13-10-2009 alle 13:50. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
- Anzitutto, perchè metti il nomeTabella fra parentesi quadre ? Io uso lo stesso nomeTabella presente nel DB Sql Server, e funziona benissimo. - Fai una INSERT mischiando concatenazione con apici singoli, variabili, parameter solo su "data". Perchè mai non fai tutto con i parametri ? Così ti complichi solo la vita inutilmente. - Che metodo usi su cmdDB per eseguire l'insert ? Io uso .ExecuteNonQuery(). Ce l'ho davanti proprio ora, e ti garantisco che la mia Insert 100% parametrica funziona. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2006
Messaggi: 502
|
te l'ho scritta su.. guarda ora ho messo il codice uguale al tuo papale papale.. stesso errore
Dim str As String = "INSERT INTO CronologiaEventi (Data) VALUES (@data)" cmdDB.Parameters.Add("@data", SqlDbType.DateTime).Value = "10/03/2009 12.11.10" Dim cmdDBC As New SqlClient.SqlCommand(str, connDB) cmdDBC.ExecuteNonQuery() dichiarare variabile scalare @data.. tutte a me capitano -.- |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2006
Messaggi: 502
|
TOMBOLA!!Grazie mille
Dim str As String = "INSERT INTO CronologiaEventi (Data) VALUES (@data)" cmdDB.Parameters.Add("@data", SqlDbType.DateTime).Value = "10/03/2009 12.11.10" Dim cmdDBC As New SqlClient.SqlCommand(str, connDB) cmdDBC.ExecuteNonQuery() praticamente al posto di scrivere cmdDB devo scrivere cmdDBC che fesso XD e quindi il codice corretto è questo: Dim str As String = "INSERT INTO CronologiaEventi (Data) VALUES (@data)" Dim cmdDBC As New SqlClient.SqlCommand(str, connDB) cmdDBC.Parameters.Add("@data", SqlDbType.DateTime).Value = "10/03/2009 12.11.10" cmdDBC.ExecuteNonQuery() Però non riesco a resettare l'indice di una tabella.. nel senso che ho messo tanti record di prova, ora li ho cancellati tutti ma l'indice continua dall ultimo che avevo inserito quindi dal 1809° miseriaccia.. ho letto che per azzerare l'indice dovrei usare TRUNCABLE table ma non va.. ho provato con " ALTER TABLE table tabella AUTO_INCREMENT=1 " e mi dice che in prossimità del '=' la sintassi non è corretta.. sai dirmi come fare? >.< Ultima modifica di KeySim : 13-10-2009 alle 14:24. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Per ora posso farti queste domande :
- Che versione di Sql Server usi ? ( Io ho Sql Server 2005 Express senza alcun SP ) - Il DB che usi è frutto di un porting da altro DB ? ( es. da Oracle a Sql... ) - Il campo Data è un campo calcolato ? - Che vincoli ha il campo Data ? Per quanto mi riguarda è un tipo di errore "strano", prova anche ad andare su MS e cecare le possibili cause. A me non succede praticamente MAI. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jun 2006
Messaggi: 502
|
eheh ma ascolta per il problema dell ALTER TABLE sai aiutarmi? o qualcun altro può? son disperato miseriaccia perchè il primo problema l'ho risolto.. il 2 idem rimane quello dell alter table..
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Esempio : DBCC CHECKIDENT ('nomeTabella', RESEED, 1) Dovrebbe resettare i campi identity di nomeTabella al newseed = 1. EDIT : DBCC CHECKIDENT ('nomeTabella', RESEED, 0) per far iniziare il contatore da 1 al primo inserimento... Ultima modifica di MarcoGG : 13-10-2009 alle 15:10. |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jun 2006
Messaggi: 502
|
Grazie di tutto ora funziona tutto alla perfezione ^^ grazie delle dritte, potete chiudere =)
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:13.













d'oro massiccio.







