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
Aprire un secondo form con un campo codice uguale al primo form
lunedì 15 novembre 2010 - 22.39
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 3.5
|
Windows XP
|
Visual Studio 2008
|
SQL Server 2005
|
Office 2010
|
Internet explorer 8.0
|
Crystal Reports XI
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
lun 15 nov 2010 - 22:39
Ho un form principale e un secondario, come faccio ad aprire il secondo form con lo stesso "codice" del primo, cioè se il campo codice nel primo form è uguale a "mela" il secondo form deve aprirmi con tutti in campi compilati con lo stesso codice " mela" , i due form hanno due tabelle di database diverse ma con il campo "mela" uguale. Inoltre chiedo come costruire una query per esempio Select * from tabella WHERE tabella1.campo=tabella2.Campo.
Ringrazio
darkeric
Profilo
| Senior Member
211
messaggi | Data Invio:
mar 16 nov 2010 - 10:59
se vuoi puoi recuperare tutti i valori degli oggetti degli altri form
es. me.textbox2.text = form1.textbox1.text
a quel punto costruisci la query e filtri utilizzando quel valore come parametro.
per la query non so se posso esserti utile perchè io di solito uso gli oggetti integrati al Dataset
come Datatable e Tableadapter
quindi le query me le creo da li
se usi questo metodo pure tu
puoi andare in Dataset Design e aggiungere una query al tableadapter della tabella
ti aiuterà la procedura guidata.
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
mer 17 nov 2010 - 14:45
Grazie per la procedura, la seguente prodecura mi dà sempre errore nella query, la domanda è questa: nella clausola WHERE come faccio a far leggere il secondo campo . Per es. alla clausola WHERE VALUTA=(quà che codice devo inserire per essere uguale al textbox2.text)?
Grazie
darkeric
Profilo
| Senior Member
211
messaggi | Data Invio:
mer 17 nov 2010 - 15:59
Mi par di capire che le query le scrivi da codice
nel caso
la querystring deve essere una stringa quindi
querystring = "Select * from tabellaX Where Valuta = ' " + textbox1.text + " ' "
se usi invece la query builder del tableadapter devi utilizzare i parametri.
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
mer 17 nov 2010 - 18:30
Ciao scusa per il disturbo,
esatto creo la query da codice che per la ricerca in una combobox funziona perfettamente anche perchè non c'era la clausola WHERE:
io imposto il seguente codice:
txtIDdipendente.Text = "10"
txtcognome.Text = "tizio"
Dim dstdati As DataSet
Dim adpdati As SqlDataAdapter
Dim cmddati As SqlCommand
cmddati = New SqlCommand()
cmddati.Connection = SqlHelper.ConnessioneDatabase
cmddati.CommandText = "SELECT iddipendente, cognome FROM tabdipendenti WHERE iddipemdente= ' " + txtIDdipendente.Text + " 'AND ' " + txtcognome.Text + " '"
adpdati = New SqlDataAdapter(cmddati)
dstdati = New DataSet
adpdati.Fill(dstdati, "tabdipendenti")
'cmbdati.DataSource = dstdati.Tables(0)
Dove sto sbagliando?
preciso che quest query devi aprirmi un campo determinato dall'iddipendente e cognome scelto ed in pù mi deve compilare anche i rimanenti campi es. nome , data di nascita ecc.
Grazie
darkeric
Profilo
| Senior Member
211
messaggi | Data Invio:
mer 17 nov 2010 - 19:26
txtIDdipendente.Text = "10"
txtcognome.Text = "tizio"
Dim dstdati As DataSet
Dim adpdati As SqlDataAdapter
Dim cmddati As SqlCommand
cmddati = New SqlCommand()
cmddati.Connection = SqlHelper.ConnessioneDatabase
cmddati.CommandText = "SELECT iddipendente, cognome FROM tabdipendenti WHERE iddipemdente= ' " + txtIDdipendente.Text + _
" ' AND cognome = ' " + txtcognome.Text + " '"
adpdati = New SqlDataAdapter(cmddati)
dstdati = New DataSet
adpdati.Fill(dstdati, "tabdipendenti")
'cmbdati.DataSource = dstdati.Tables(0)
il campo iddipendente è stringa o numerico?
se è stringa mi pare corretta
se è numerico devi togliere gli ' (apici) prima e dopo txtIDdipendente.text
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
mer 17 nov 2010 - 21:29
ciao,
niente non funziona, cioè non filtra i dati, se tolgo la clausola Where allora si che funziona.
Inoltre nel caso funzionasse, come faccio a caricare gli altri dati?, lesempio precedente vale solo per la combobox, se devo riempire hli altri campi, dove devo sosituire " 'cmbdati.DataSource = dstdati.Tables(0)" ?
Grazie
darkeric
Profilo
| Senior Member
211
messaggi | Data Invio:
mer 17 nov 2010 - 22:29
hai provato a filtrare solo con l ID ?
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
gio 18 nov 2010 - 15:48
ricapitoliamo:
nel form_load ..
mOperazione = TipoOperazione.Nessuna
mPulisciControlli = New SvuotaControlli
Dati = New Tabella(ConnessioneDatabase, "tabdipendenti")
Dati.NomeCampoModifica = "Modifica"
Dati.Ordinamento = "iddipendente"
Dati.CaricaDati()
VisualizzaDati()
end sub
Private Sub VisualizzaDati()
SvuotaCampi()
Dim riga As DataRow = Nothing
If Not Dati.RigaCorrente(riga) Then
'Nessun record presente nella tabella
PreparaVuoto()
Else
'Inserisco i valori nei controlli
txtIddipendente.Text = riga("iddipendente").ToString
If Not riga("cognome") Is DBNull.Value Then
txtcognome.Text = riga("cognome").ToString
Else
txtcognome.Text = String.Empty
End If
If Not riga("nome") Is DBNull.Value Then
txtnome.Text = riga("nome").ToString
Else
txtnome.Text = String.Empty
End If
......omissis...
end if
end sub
Private Sub CaricaRiga()
Dim riga As DataRow = Nothing
If mOperazione = TipoOperazione.Inserimento Then
riga = Dati.RigaNuova
Else
Dati.RigaCorrente(riga)
End If
riga("iddipendente") = txtIddipendente.Text.Trim
If txtcognome.Text.Trim <> String.Empty Then
riga("cognome") = txtcognome.Text.Trim
Else
riga("cognome") = DBNull.Value
End If
If txtnome.Text.Trim <> String.Empty Then
riga("nome") = txtnome.Text.Trim
Else
riga("nome") = DBNull.Value
End If
....omisiss..
end sub
ribadisco che il codice funziona benissimo è solo per creare il filtro che non funziona neanche con L'id.
darkeric
Profilo
| Senior Member
211
messaggi | Data Invio:
gio 18 nov 2010 - 16:45
Quando dici non funziona, significa che ti segnala errore il debug o che ti recupera 0 righe?
se ti va di fare una prova
aggiungi al progetto un dataset
trascinaci la tabella da esplora server
clicca col dx sul tableadapter e scegli aggiungi query
segui la procedura guidata fino a che troverai il pulsante
"generatore di query"
scrivi la query e prova ad eseguirla da li
cmq secondo me a creare tutto da codice vi complicate inutilmente la vita
Visual Basic mette a disposizione gli oggetti proprio per aiutarci nello sviluppo!
cmq spero tu risolva il problema!
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
gio 18 nov 2010 - 18:03
Ciao,
mi ritorna zero righe, ma senza errori.
Evito sempre di usare i wizards perchè poi è difficile in caso di modifiche o errori gestire il codice ed il programma.
Provo a fare delle modifiche.
Comunque in caso negativo ho codificato con un pulsante ricerca che mi apre un form con due combobox, un pulsante ed una griglia.
Caricando le due combo mi compila la griglia controllo che sia giusto e premento il button mi apre il record desiderato.
Grazie comunque, perchè mi hai insegnato nella ricerca di un textbox nella query.
Poi ti farò sapere come è andata.
darkeric
Profilo
| Senior Member
211
messaggi | Data Invio:
gio 18 nov 2010 - 18:44
Resto in standby allora, ciao!
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
sab 20 nov 2010 - 17:15
ciao,
ho questo problema:
come leggere il 1° e l'ultimo record di una tabella considerando che c'è un filtro:
Dim dstdata As DataSet
Dim adpdata As SqlDataAdapter
Dim cmddata As SqlCommand
txtdipendente.Text = cmbdipendente.Text
cmddata = New SqlCommand()
cmddata.Connection = SqlHelper.ConnessioneDatabase
cmddata.CommandText = "SELECT dipendente,data_inizio,data_fine from tabdipendentiWhere nave='" + txtdipendenti.Text + "'"
adpdata = New SqlDataAdapter(cmddata)
dstdata = New DataSet
adpdata.Fill(dstdata, "tabdipendenti")
dgv.DataSource = dstdata.Tables(0)
dati.movefirst()
Dim riga As DataRow = Nothing
If Not Dati.RigaCorrente(riga) Then
'Nessun record presente nella tabella
PreparaVuoto()
Else
If Not riga("data_inizio") Is DBNull.Value Then
txtdata1.Text = riga("data_inizio").ToString
Else
txtdata1.Text = String.Empty
End If
dati.movelast()
'If Not Dati.RigaCorrente(riga) Then
'Nessun record presente nella tabella
'PreparaVuoto()
If Not riga("data_fine") Is DBNull.Value Then
txtdata2.Text = riga("data_fine").ToString
Else
txtdata2.Text = String.Empty
End If
End If.
mi restituisce solo il le date di un rigo, a me interessa il 1° record e l'ultimo della tabella.
grazie
poi penserò anche al precdente problema
darkeric
Profilo
| Senior Member
211
messaggi | Data Invio:
sab 20 nov 2010 - 20:34
Provo ad aiutarti
quando filtri la tabella la carichi filtrata su un adapter giusto?
l'adapter dovrebbe avere le righe (Rows) indicizzate
quindi per la prima dovresti scegliere l'indice 0 quindi rows(0)
mentre per l'ultima rows(..adapter.rows.count-1)
spero ti sia di aiuto
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
sab 20 nov 2010 - 21:16
Ciao,
e quindi come dovrei fare?
darkeric
Profilo
| Senior Member
211
messaggi | Data Invio:
lun 22 nov 2010 - 08:18
dipende quale adapter utilizzi
io uso le Datatable e gli passo i dati filtrati
per esempio
dim DT1 as datatable = tabellaTableadapter.Fillby(textbox1.text)
a questo punto la tabella DT1 contiene tutti i dati filtrati
Primorecord = DT1.rows(0).item("la colonna che vuoi")
Ultimorecord = DT1.rows(DT1.rows.count-1).item("la colonna che vuoi")
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
gio 25 nov 2010 - 23:22
ciao scusa il ritardo ma ero fuori,
niente da fare mi da errore in tabellaTableadapter
Dim DT1 As DataTable = tabellaTableadapter.Fillby(textbox1.text)
credo che sconvolgero il codice e programma perche nn ce ne esco fuori
darkeric
Profilo
| Senior Member
211
messaggi | Data Invio:
ven 26 nov 2010 - 09:11
o usi
Dim DT1 As DataTable = tabellaTableadapter.Fillby(Dataset.tabella, textbox1.text)
oppure usi
Dim DT1 as datatable = tabellatableadapter.Getdata(textbox1.text)
Fabio
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
ven 26 nov 2010 - 17:45
ciao Fabio,
credo che il problema è che non uso wizard di vb ma faccio tutto da codice , nel programma ho utilizzato dataset e mai datatable e quantomeno tableadapter, mi protresti gentilmente fare un esempio su come utilizzarli?
Grazie
darkeric
Profilo
| Senior Member
211
messaggi | Data Invio:
ven 26 nov 2010 - 19:00
Non è brevissimo ma provo a darti gli input giusti
anzichè creare la connessione da codice
utilizza la finestra esplora Database
se non la visualizzi vai su visualizza e sceglila dall'elenco
premi sul pulsante + e il wizard ti guiderà alla creazione della connessione al DB
una volta fatto questo, Esplora database ti mostretà la struttura ad albero del tuo DB
a quel punto clicca cul menu progetto e scegli aggiungi nuovo elemento
scegli Dataset, e poi aggiungi.
a questo punto si apre lo schema del dataset
non ti resta che trascinare le tabelle che ti interessano dal DB sulla finestra dellla struttura del dataset
così facendo automaticamente ti verranno create le Datatable e i Tableadapter
cliccando col DX sui tableadapter puoi creare delle query con i wizard o meglio ancora col generatore di query cliccabila al 3° passaggio del wizard stesso
è chiaro che da li puoi anche provarle cosi da non generare errori durante l'esecuzione
come potrai notare la query creata ti genera il metodo fill e il metodo getdata (chiaramente li puoi chiamare come vuoi)
il getdata è quello che a me interessa perchè lo utilizzo per passargli dei dati filtrati
che poi aggancio agli oggetti che hanno la proprietà datasource (listbox, datagridview, combobox, etc)
es.
dim tb1 as datatable = tabellatableadapter.getdata(filtro)
combobox1.datasource= tb1
combobox1.displaymember ="nome del campo della tabella o suo indice - rappresenta il testo del campo da visualizzare"
combobox1.valuemember ="nome del campo della tabella o suo indice - rappresenta il valore restituito dalla combo"
in definitiva la tua datatable la devi vedere come una matrice bidimensionale
es.
c = tb1.rows(0).item(1) - in c verrà passato il valore della riga (0) , colonna(1) del datatable
questo per quanto riguarda la lettura dei dati
per la scrittura invece usi le query di update,insert,delete che crei sempre nel tableadapter
scrivendo
es.
tabellatableadapter.insertquery(parametro1,parametro2, etc.)
spero di essere stato chiaro
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
ven 26 nov 2010 - 22:19
Ciao Darkeric,
Ho risolto facendo cosi:
inserendo una query...... from... where.. order by iddipendente ASC
e
inserendo una seconda query...... from... where.. order by iddipendente DESC
così in tutti e due i casi prelevo il primo campo.
non è molto elegante sul piano della programmabilità però funziona.
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 !