Problema Datagridview

domenica 27 aprile 2014 - 17.54
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  SQL Server 2008 R2

victordotnet Profilo | Newbie


Salve a tutti vi scrivo in merito a un problema che non riesco a risolvere e spero possiate aiutarmi.
In pratica ho creato nella mia applicazione windows form un scheda relativa a dei pazienti di uno studio medico dentistico.
In sql ho creato una vista che mi metteva in relazione tre tabelle Pazeinte Cartellaclinica e Cassa
Ora caricando la vista come oggetto dataset in vs2012 ho diviso in tre tab control i valori che l'utente deve inserire. Nel primo tab control ho un datagridview che mi visualizza solo alcuni campi. Nel secondo tre textbox con altri tre campi e nell'ultimo un ulteriore datagridview con gli ultimi campi che mi servivano.
Nel momento che mi dichiaro le variabili e mi prelevo i valori dai datagrid faccio le prime due insert relative alle prime due tabelle della vista e tutt ok, ma quando arrivo a prelevare i dati dall'ultimo datagrid non vengono memorizzati. Sbaglio qualcosa?
Vi posto il codice sperando di darvi maggior chiarezza. ;)
-----------------------------------------------------------------------------------------------------
Dim iriga As Integer = VistaSchedaPazienteDataGridView.CurrentRow.Index
Dim iriga2 As Integer = VistaDatagrid2.CurrentRow.Index

Dim ragionesociale As String = RagionesocialeTextBox.Text.ToString.Trim
Dim civico As String = CivicoTextBox.Text.ToString.Trim
Dim eta As Integer = CInt(EtaTextBox.Text)
Dim indirizzo As String = IndirizzoTextBox.Text.ToString.Trim
Dim citta As String = CittaTextBox.Text.ToString.Trim
Dim datanascita As DateTime = DatanascitaDateTimePicker.Value.ToString
Dim luogonascita As String = LuogonascitaTextBox.Text.ToString.Trim
Dim codfiscale As String = CodfiscaleTextBox.Text.ToString.Trim
Dim cap As String = CapTextBox.Text.ToString.Trim
Dim provincia As String = ProvinciaTextBox.Text.ToString.Trim
Dim provincia2 As String = ProvincianascitaTextBox.Text.ToString.Trim
Dim sesso As String = SessoTextBox.Text.ToString.Trim
Dim telefono1 As String = TelfissoTextBox.Text.ToString.Trim
Dim cell As String = CellulareTextBox.Text.ToString.Trim
Dim piva As String = PivaTextBox.Text.ToString.Trim
Dim tessera As String = TesserasanitariaTextBox.Text.ToString.Trim

'Inserisco i valori nel db effettuando una insert nelle rispettive tre tabelle
'possibile l'utilizzo di una stored procedure
'----------------------------
'parametri di connessione
Dim connection1 As String = AldentStudio.CON1.ToString
Dim SQLCon As New SqlClient.SqlConnection
Dim command As New SqlCommand
Dim command2 As New SqlCommand
Dim command3 As New SqlCommand

SQLCon.ConnectionString = connection1
SQLCon.Open()
'---------------------------
'insert manuali
Dim query1 As String
Dim query2 As String
Dim query3 As String
'3 insert in 3 tabelle
query1 = ("Insert into Pazienti (ragionesociale,indirizzo,citta,cap,codfiscale,telfisso,cellulare,datanascita,luogonascita,piva,provincia,sesso,tesserasanitaria,eta,provincianascita,civico) VALUES ('" & ragionesociale & "','" & indirizzo & "','" & citta & "','" & cap & "','" & codfiscale & "','" & telefono1 & "','" & cell & "','" & datanascita & "','" & luogonascita & "','" & piva & "','" & provincia & "','" & sesso & "','" & tessera & "','" & eta & "','" & provincia2 & "','" & civico & "')")
Command = New SqlCommand(query1, SQLCon)
Command.ExecuteNonQuery()

'Seconda insert
'---------
'variabile seconda tabella
Dim prestazione As String = VistaSchedaPazienteDataGridView.Item(0, iriga).Value.ToString
Dim tipoprestazione As String = VistaSchedaPazienteDataGridView.Item(1, iriga).Value.ToString
Dim numdente As String = VistaSchedaPazienteDataGridView.Item(2, iriga).Value.ToString
Dim fase As String = VistaSchedaPazienteDataGridView.Item(3, iriga).Value.ToString
Dim prezzoprest As Double = CDbl(VistaSchedaPazienteDataGridView.Item(4, iriga).Value)
'recupero il valore usato come chiave esterna
Dim codfisc1 As String = VistaSchedaPazienteDataGridView.Item(5, iriga).Value.ToString
codfisc1 = codfiscale
'seconda scheda
Dim noteanamnesi As String = NoteanamnesiTextBox.Text.ToString.Trim
Dim notesuidenti As String = NotedentiTextBox.Text.ToString.Trim
Dim noteimportanti As String = NoteimportantiTextBox.Text.ToString.Trim
'---------
query2 = ("Insert into CartellaClinica (prestazioni,tipoprastazione,numdente,noteanamnesi,notedenti,noteimportanti,fase,prezzoprest,codfiscale) VALUES ('" & prestazione & "','" & tipoprestazione & "','" & numdente & "','" & noteanamnesi & "','" & notesuidenti & "','" & noteimportanti & "','" & fase & "','" & prezzoprest & "','" & codfisc1 & "')")
command2 = New SqlCommand(query2, SQLCon)
command2.ExecuteNonQuery()

'ultime query inserimento cassa
Dim riga2 As Integer = VistaSchedaPazienteDataGridView.CurrentRow.Index

Dim tipofattura As String = VistaDatagrid2.Item(0, riga2).ToString.Trim
Dim oggettofattura As String = VistaDatagrid2.Item(1, riga2).ToString.Trim
Dim datafattura As DateTime = (VistaDatagrid2.Item(2, riga2).Value).ToString

Dim importo As Double = CDbl(VistaDatagrid2.Item(3, riga2).Value)
Dim codfisc2 As String = VistaDatagrid2.Item(4, riga2).ToString.Trim
codfisc2 = codfiscale

query3 = ("Insert into Cassa (tipofattura,oggetto,data,importo,codfiscale) VALUES ('" & tipofattura & "','" & oggettofattura & "','" & datafattura & "','" & importo & "','" & codfisc2 & "')")
command3 = New SqlCommand(query3, SQLCon)
command3.ExecuteNonQuery()
---------------------------------------------------------------
Grazie in anticipo ;)

Peppino Profilo | Junior Member

Ciao vittorio.
Non è che io sia uno più esperto di te, ma prova cosi:

command3 = New SqlCommand("Insert into Cassa (tipofattura,oggetto,data,importo,codfiscale) " _
& "VALUES (@tipofattura,@oggettofattura,@datafattura,@importo,@codfisc2);", command3.Conection)
command3.Parameters.Add(New SqlParameter("@tipofattura",SqlType.qui ci metti il tipo)) 'il tipo se int o VarChar ecc.
command3.Parameters("@tipofattura").Value = tipofattura
command3.Parameters.Add(New SqlParameter("@oggettofattura",SqlType.qui ci metti il tipo)) 'il tipo se int o VarChar ecc.
command3.Parameters("@oggettofattura").Value = oggettofattura
command3.Parameters.Add(New SqlParameter("@data",SqlType.qui ci metti il tipo)) 'il tipo se int o VarChar ecc.
command3.Parameters("@data").Value = data
command3.Parameters.Add(New SqlParameter("@importo",SqlType.qui ci metti il tipo)) 'il tipo se int o VarChar ecc.
command3.Parameters("@importo").Value = importo
command3.Parameters.Add(New SqlParameter("@codfiscale",SqlType.qui ci metti il tipo)) 'il tipo se int o VarChar ecc.
command3.Parameters("@codfiscale").Value = codfiscale
command3.Connection.Open()
command3.ExecuteNonQuery()
command.Connection.Close()

Spero di averti dato una indicazione giusta.
Ciao.

victordotnet Profilo | Newbie

ciao e grazie per la risposta, il problema però è che quando inserisco i dati nel secondo datagrid è come se non mi prendesse i primi due valori...boh

Peppino Profilo | Junior Member

Ciao Vittorio.
Dispiace di non esserti stato di aiuto, comunque io faccio cosi come da esempio, e funziona bene. Evidentemente il problema potebbe essere altrove. Controlla che tutte le variabili arrivano alle query valorizzate nel modo corretto, a volte basta un errore di battitura per farti impazzire e a proposito nella seconda query penso che ci sia un errore del genere. Poi eventualmente ti risponderà qualcuno più esperto che ti potrà aiutare a risolvere il problema.
Ciao.

victordotnet Profilo | Newbie

Ciao Peppino, sono riuscito a scoprire il problema che mi affliggggeva su questa form.
Era un errore stupido in pratica sbagliavo a individuare gli indici e ai primi due valori tipofattura e oggetto venivano visualizzati i contenuti della cella non il valore.
Grazie lo stesso per la risposta ;)
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5