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
App. WinForms / WPF .NET
Inserimento dati su tabelle con relazioni
mercoledì 20 gennaio 2010 - 00.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
nikkysixx
Profilo
| Junior Member
100
messaggi | Data Invio:
mer 20 gen 2010 - 00:57
1243_prova.zip
Salve a tutti,avvicinandomi da poco ai db, ho un dubbio basilare su vb.net e sui database in generale,cmq vi spiego la situazione ho 2 tabelle
Libro (isbn,nome,id_distributore) dove isbn è la chiave primaria
Distributore(id,nome) dove id è la chiave primaria
Le due tabelle sono collegate in relazione uno a molti con chiave esterna distributore.id
Nel mio programma vb ho importato come origine dati le due tabelle che visualizzo correttamente
Il problema è l inserimento dati da parte dell utente.Come creare un input che aggiorni entrambe le tabelle separate? ovvero come collegare libro.id_distributore e distributore.id nascondendo il tutto all utente?
In allegato ho messo l esempio realizzato sinora,se qualcuno potesse darmi una mano gliene sarei infinitamente grato
Grazie
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 20 gen 2010 - 09:48
Ciao,
Considerato che la tua insert la crei a livello di programmazione e che quindi rimarrà sempre trasparente per l'utente.
Incomincia con il creare una combobox con i nomi degli autori inseriti in precedenza e una textbox libera per inserire i mancanti entrabi selezionabili tramite radio(o uno o l'altro)
dopo di che crei tante text box per inserire i dati sui libri.
Sul tasto salva va a fare le tue insert dove andrai:
1) preleva l'id dell'autore se e gia esistente e lo inserirai come parametro per l'inserimento del libro.
2)inserire l'autore,se noon presente nella combobox, e prelevare l'ultimo id inserito (tramite la funzione "SELECT @@IDENTITY from nomeTabella") per poi passarlo, come sopra , alla insert per inserire il libro
Se hai dubbio problemi posta.
ciaoooo
nikkysixx
Profilo
| Junior Member
100
messaggi | Data Invio:
mer 20 gen 2010 - 12:31
Ci provo e ti dico come procede,nel frattempo essendo un novizio, aspettati domande cretine ^_^
La combobox ora provo a farla,ma non capisco la frase
"una textbox libera per inserire i mancanti entrambi selezionabili tramite radio(o uno o l'altro)"
E poi cosa intendi con @@identity???
Nella tabella editore,c è un ID tipo numerico...dovrei farlo forse autoincrementante?
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 20 gen 2010 - 13:44
In pratica devi far in modo che ci sia un elenco di autori esistente (la combobox) e una casella libera dove aggiornare il db con autori non ancora esistenti (la textbox) in pratica la radiobutton va a disabilitare o la combobox o la textbox in base alla scelta delle radio. Questo è il metodo piu semplice c'e' ne sono altri ma incomincia con questo.
la stringa "SELECT @@IDENTITY from nometabella" restituisce l'ultimo id inserito nella tabella. Ma parleremo dopo di questo incomincia a progetare la pagina come detto o in un modo a te piu consono poi vedremo il seguito
Facci sapere
ASP 2.0 - VB 2008
nikkysixx
Profilo
| Junior Member
100
messaggi | Data Invio:
mer 20 gen 2010 - 14:05
Un paio di premesse,l applicazione è un winform creato con vb2008 e database access mdb
Guarda un primo problema consiste proprio nell inserimento dell ID (dichiarato autoincrementante)
Supponendo che io abbia una tabella editore con ID,nome e un parametro in ingresso nella Textbox1
Quando eseguo l istruzione
Dim cmd As New OleDbCommand( _
"INSERT INTO editore (A) " & _
"VALUES (? )", _
nome_connessione)
cmd.Parameters.Add(New OleDbParameter("A", TextBox1.Text))
Ottengo un errore in quanto è necessario specificare un valore anche per l id
Come risolvere il problema?
ti ringrazio per la pazienza :D
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 20 gen 2010 - 14:43
allora non è autoincrementante o l'hai messo come parametro nella query.
scrivimi la tabella e la query e diamo un'occhiata
ASP 2.0 - VB 2008
nikkysixx
Profilo
| Junior Member
100
messaggi | Data Invio:
mer 20 gen 2010 - 15:12
Tabella editori presente nel file prova.mdb
editori
--------
campi
ID : contatore (Nuovi valori: Incremento, Indicizzato SI,duplicati non ammessi)
nome : testo
Query & Cattura parametro da textbox associate alla pressione di un Button
-----------------------------------------------------------------------------------------
Dim cmd As New OleDbCommand( _
"INSERT INTO editori (nome) " & _"VALUES (? )", _nome_connessione)
cmd.Parameters.Add(New OleDbParameter("nome", TextBox1.Text))
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 20 gen 2010 - 15:22
modifica cosi
"INSERT INTO editori (nome) VALUES (TextBox1.Text)
fammi sapere
ASP 2.0 - VB 2008
nikkysixx
Profilo
| Junior Member
100
messaggi | Data Invio:
mer 20 gen 2010 - 15:41
Perfetto funziona
,adesso ho nella tabella editore,un nome e un id autoincrementante
La tabella editore è collegata in relazione uno a molti (lato libro) con la tabella libro
Ora dovrei creare delle voci di inserzione per i campi del libro
-ISBN
-Titolo
-Combobox riempita coi valori presenti all interno della colonna nome degli editori (se ho capito bene)
Giusto?
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 20 gen 2010 - 15:54
Si perfetto.
Quello che ti consiglio di crearti tutte le query lato db e richiamartele lato codice in modo da poterle riutilizzare e soprattutto in termini di prestazioni e molto superiore.
Riempi la tua combobox con i nomi editori.
Dopo di che non ti resta che fare una sola insert per "inserire" il libro.
Ora ti lascio in mani esperte vado a lavoro
.
A Piu tardi
ASP 2.0 - VB 2008
nikkysixx
Profilo
| Junior Member
100
messaggi | Data Invio:
mer 20 gen 2010 - 16:12
Ok ^_^
Sono riuscito ad associare il valore della combobox selezionata con il rispettivo id
Creando una combobox (ComboBox1),selezionando
Attività di ComboBox1
Usa elementi associati ai dati
BindingSource relativa alla tabella editore
Visualizza membro - > (relativo all editore)
Membro valore -> id (relativo all editore)
A questo punto durante l inserimento di un libro ho passato come parametro id_editore,il valore ComboBox1.SelectedValue e le tabelle si aggiornano correttamente . Spero di aver fatto tutto correttamente
E ora gli ultimi due dubbi
1)la combobox è possibile farla partire con un valore inizialmente nullo anzichè dal primo selezionato?
2)Ora rimane la questione delle due scelte col radiobutton e l identity
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 20 gen 2010 - 23:02
bravo...
per far partire con valore nullo aggiungi come prima voce nel db il primo valore con la voce scegli in modo da non doverlo associare a nulla.
La radio ti serve per selezionare tra la combo oppure la textbox.
La combo serve se l'editore esiste gia mentre la text serve casomai si deve inserire un nuovo editore....
se ti e tutto chiaro in comincia a creare questo e poi si va avanti
ASP 2.0 - VB 2008
nikkysixx
Profilo
| Junior Member
100
messaggi | Data Invio:
mer 20 gen 2010 - 23:58
"per far partire con valore nullo aggiungi come prima voce nel db il primo valore con la voce scegli in modo da non doverlo associare a nulla"
non ho capito perdonami,e ci sto provando da un po senza riuscirci
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
gio 21 gen 2010 - 02:53
Nel db come nome del primo editore metti "Scegli" in modo che comparira' questo al posto del primo valore utilizzabile.
Ricorda di confrontatre la scelta con il valore "scegli" altrimenti potranno essere inseriti libri con l'editore "scegli"
facci sapere
ASP 2.0 - VB 2008
nikkysixx
Profilo
| Junior Member
100
messaggi | Data Invio:
ven 22 gen 2010 - 00:28
Ah ho capito
ma come faccio a confrontarlo e a far apparire un avviso "Scegli un editore" nel caso in cui un utente inserisca erroneamente scegli come editore
oddio sembra uno scioglilingua
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
ven 22 gen 2010 - 01:12
Se il nome editore "scegli" ha id=0 paragone in questo modo prima di dare la insert
if not id=0 then
Codice insert
else
txterrore.text="Attenzione devi scegliere un nome editore"
end if
Questo e un metodo
prova e poi andiamo avanti
Se ho risposto a tutte le risposte e altre domande O.T. accette le risposte e apri un nuovo post cosi piu persone possono aiutarti
ciaoooo
ASP 2.0 - VB 2008
nikkysixx
Profilo
| Junior Member
100
messaggi | Data Invio:
ven 22 gen 2010 - 19:02
Hai ragione
grazie infinite per il supporto
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 !