Efettuare insert+select access

venerdì 25 gennaio 2008 - 13.41

ertulio Profilo | Senior Member

Salve, dovrei copiare il contenuto di una tabella in una seconda tabella. Però la seconda tabella ha un campo in più che memorizza un valore da textbox. Il mio problema è questo.
Faccio la insert e la select contemporaneamente:


INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria) select CodArt,prodotto,Prezzo,Categoria from prodotti where id=" + Request.QueryString("id").ToString + " "


Fin qui tutto bene, però oltre questo inserimento dovrei inserire nella seconda tabella anche il valore di un textbox, ossia nella insert dovrei inserire anche il campo values dove va inserito?
grazie
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

0v3rCl0ck Profilo | Guru

>Salve, dovrei copiare il contenuto di una tabella in una seconda
>tabella. Però la seconda tabella ha un campo in più che memorizza
>un valore da textbox. Il mio problema è questo.
>Faccio la insert e la select contemporaneamente:
>

Ciao

>
>INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria) select
>CodArt,prodotto,Prezzo,Categoria from prodotti where id=" + Request.QueryString("id").ToString
>+ " "


Se ho capito bene dovresti risolvere il quesito così:

String.Format("INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria,NomeColonnaTextbox) select CodArt,prodotto,Prezzo,Categoria,{0} AS [NomeColonnaTextbox] from prodotti where id={1}", Me.TextBox.Text, Request.QueryString("id"))

Però devi fare attenzione alla corretta formattazione da dare al valore da inserire, se è una stringa dovrai mettere un paio di singoli apici intorno al {0}, se invece è un numero gli apici non ci vogliono, ma il numero dovrà essere correttamente formattato in base alla lingua in cui è settato il database.


>
>
>Fin qui tutto bene, però oltre questo inserimento dovrei inserire
>nella seconda tabella anche il valore di un textbox, ossia nella
>insert dovrei inserire anche il campo values dove va inserito?
>grazie

Enjoy

http://blogs.dotnethell.it/Regulator/

ertulio Profilo | Senior Member

ho fatto in questo modo
INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria,idSession) select CodArt,prodotto,Prezzo,Categoria from prodotti where id=" + Request.QueryString("id").ToString + "','" + Session.SessionID.ToString + "'"

il campo idsession è il campo in + della seconda tabella docve dovrei memorizzare l'idsession.

ma mi dice Il numero dei valori nella query non corrisponde a quello dei campi di destinazione

come mai
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

0v3rCl0ck Profilo | Guru

>ho fatto in questo modo
>INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria,idSession)
>select CodArt,prodotto,Prezzo,Categoria from prodotti where id="
>+ Request.QueryString("id").ToString + "','" + Session.SessionID.ToString
>+ "'"

Prova così:

"INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria,idSession) select CodArt,prodotto,Prezzo,Categoria," + "'" + Session.SessionID.ToString + "'" + "AS idSession from prodotti where id=" + Request.QueryString("id").ToString

http://blogs.dotnethell.it/Regulator/

ertulio Profilo | Senior Member

Funziona grazie 1000
Volevo chiederti un altra cosa, nella tabella carrello dovrei inserire un ulteriore campo, quantita, che vorrei memorizzare in automatico a 1, come devo aggiungere alla query da te citata? inoltre AS di solito lo uso nei datagrid per rinominare il campo, qui però che funzione ha? Sto imparando da poco i db. grazie 1000
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

ertulio Profilo | Senior Member

Ho provato in questo modo:
"INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria,idUtente,Quantita) select CodArt,prodotto,Prezzo,Categoria," + "'" + Session.SessionID.ToString + "'" + "'" + TextBox1.Text + "'" + "AS idSession,Qauntita from prodotti where id=" + Request.QueryString("id").ToString

ma mi dice Nessun valore specificato per alcuni parametri necessari.

Dove sbaglio?

http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

0v3rCl0ck Profilo | Guru

>Ho provato in questo modo:
>"INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria,idUtente,Quantita)
>select CodArt,prodotto,Prezzo,Categoria," + "'" + Session.SessionID.ToString
>+ "'" + "'" + TextBox1.Text + "'" + "AS idSession,Qauntita from
>prodotti where id=" + Request.QueryString("id").ToString
>
>ma mi dice Nessun valore specificato per alcuni parametri necessari.
>
>Dove sbaglio?

Non hai specificato il valore, prova così:

"INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria,idUtente,Quantita) select CodArt,prodotto,Prezzo,Categoria," + "'" + Session.SessionID.ToString + "'" + "'" + TextBox1.Text + "'" + "AS idSession,1 AS Quantita from prodotti where id=" + Request.QueryString("id").ToString

Comunque in risposta al post di prima, la parola chiave 'AS' serve per specificare un nome ad una colonna in una select, quindi è possibile con 'AS' specificare un differente nome per una colonna o come nel nostro caso, dare un nome ad un valore di default.


Ciao

http://blogs.dotnethell.it/Regulator/

ertulio Profilo | Senior Member

In questo modo funziona, però se nel textbox inserisco il valore 2 nella tabella mi viene visualizzato sempre il valore 1.
Grazie dell'aiuto
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

0v3rCl0ck Profilo | Guru

>In questo modo funziona, però se nel textbox inserisco il valore
>2 nella tabella mi viene visualizzato sempre il valore 1.


Allora devi gestirtelo da codice. Ti consiglio di crearti una Proprietà che legga la suddetta textbox. Se la textbox è vuota, ritorni 1 (il tuo valore di default), altrimenti torni il valore stesso della textbox. Inoltre facendo la property avrai un dato tipizzato, e sarai sicuro che ti ritornerà sempre un Integer.

Ecco un esempio per la property:
Private ReadOnly Property MyTextBoxValue() As Integer Get Dim value As Integer If Integer.TryParse(Me.MyTextBox.Text, value) Then Return value End If Return 1 End Get End Property

Di conseguenza la tua query diventerà:

"INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria,idUtente,Quantita) select CodArt,prodotto,Prezzo,Categoria," + "'" + Session.SessionID.ToString + "'" + "'" + TextBox1.Text + "'" + "AS idSession," + Me.MyTextBoxValue.ToString + " AS Quantita from prodotti where id=" + Request.QueryString("id").ToString


>Grazie dell'aiuto

Prego

http://blogs.dotnethell.it/Regulator/

ertulio Profilo | Senior Member

Prendendo spunto dal tuo esempio ho risolto + semplicemente cosi:

Dim num As String
num = TextBox1.Text

"INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria,idUtente,Quantita) select CodArt,prodotto,Prezzo,Categoria," + "'" + Session.SessionID.ToString + "'" + "'" + TextBox1.Text + "'" + "AS idSession, " + num + " AS Quantita from prodotti where id=" + Request.QueryString("id").ToString


Grazie 1000 per l'aiuto
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

0v3rCl0ck Profilo | Guru

>Prendendo spunto dal tuo esempio ho risolto + semplicemente cosi:
>
>Dim num As String
>num = TextBox1.Text
>
>"INSERT INTO Carrello (CodArt,Prodotto,Prezzo,Categoria,idUtente,Quantita)
>select CodArt,prodotto,Prezzo,Categoria," + "'" + Session.SessionID.ToString
>+ "'" + "'" + TextBox1.Text + "'" + "AS idSession, " + num +
>" AS Quantita from prodotti where id=" + Request.QueryString("id").ToString

Ok bene, anche se ti consiglio comunque sempre di usare le property per leggere i controlli sulla form/pagina.

>
>
>Grazie 1000 per l'aiuto

Prego Accetta un post che chiudiamo il thread


http://blogs.dotnethell.it/Regulator/

ertulio Profilo | Senior Member

ti ho inviato una mail in quanro ho riscontrato questo problema che quando inserisco l'idsession, mi aggiunge anche la quantita nello stesso campo, a me non serve perche non potrei + ruisalire a tutti gli id uguali dal momento che se cambia quantita cambia anche l'id , questo è come avvine

quantita idsession
1 rwtwertwef3r232'1
5 rwtwertwef3r232'5
10 rwtwertwef3r232'10
56 rwtwertwef3r232'56
88 rwtwertwef3r232'88

come devo fare per eliminare la parte con l'apice? Grazie ancora
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

ertulio Profilo | Senior Member

risolto, bastava togliere il + textbox.text grazie
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

0v3rCl0ck Profilo | Guru

>risolto, bastava togliere il + textbox.text grazie

Si bravo


http://blogs.dotnethell.it/Regulator/
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5