Fatturazione Documenti di Trasporto

sabato 02 dicembre 2006 - 17.38

jekisi Profilo | Senior Member

Salve a tutto il forum, avrei il seguente problema:
Sto facendo la fatturazione dei DDT (Documenti Di Trasporto) e li faccio nel seguente modo.
Ho 3 form, nel primo tengo la Fattura, nel secondo dei dati relativi ai documenti (Serie, Numero e Data).
Per ogni campo ho 10 textbox, Serie, Serie1, Serie2, ecc., e tantomeno, le caselle della Serie stanno all' interno di un Panel, quelle del Numero all' interno di un altro.
Passando a form3, ho 3 Datagridview.
Nella prima mi spuntano tutti i documenti di trasporto del cliente selezionato a form1 e che come campo Fatturata hanno N, passando la riga al Datagridview2, il campo si modifica a S.
Per ogni riga che passo alla datagridview, mi vado a ricavare tutte le righe che appartengono a quel documento, e riga per riga li passo alle righe della fattura.

Dim i As Integer
Dim i1 As Integer
' esempio matrice
For Each ctrl As Control In Form3.Panel1.Controls
DirectCast(ctrl, TextBox).Text = ""
Next
For Each ctrl As Control In Form3.Panel2.Controls
DirectCast(ctrl, TextBox).Text = ""
Next
For Each ctrl As Control In Form3.Panel3.Controls
DirectCast(ctrl, TextBox).Text = ""
Next
'--------------
Form3.Validate()
Form3.TFattureBindingSource.EndEdit()
Form3.TFattureTableAdapter.Update(Form3.AziendaleDataSet1.TFatture)

Cn.Open() 'apro la connessione al database
sql = "delete * from rfatture where fattura=" & Form2.NumeroTextBox.Text.ToString 'query
cmd = New OleDb.OleDbCommand(sql, Cn)
dr = cmd.ExecuteReader
Cn.Close()
Form2.RfattureTableAdapter.Fill(Form2.AziendaleDataSet2.Rfatture)

Form2.RfattureDataGridView.Refresh()
'Dim i2 As Integer
For i1 = 0 To Me.TDDTBindingSource1.Count - 1

'TDDTBindingSource1.MoveNext()
For i = 0 To Me.RDDTBindingSource.Count - 1

Dim dr1 As DataRow = Form2.AziendaleDataSet2.Rfatture.NewRow()
dr1("fattura") = Form2.NumeroTextBox.Text
Form2.AziendaleDataSet2.Rfatture.Rows.Add(dr1)
Form2.RfattureBindingSource.MoveLast()
Form2.ArticoloTextBox.Text = ArticoloTextBox.Text

Form2.Validate()
Form2.RfattureBindingSource.EndEdit()
Form2.RfattureTableAdapter.Update(Form2.AziendaleDataSet2.Rfatture)
RDDTBindingSource.MoveNext()

'For i1 = 0 To Me.TDDTBindingSource1.Count - 1

TDDTBindingSource1.MoveNext()

Next

Next



adesso, oltre a questo, dovrei inserire i valori Serie, Numero e Data in form3.
Se passo un DDT, allora si dovrebbero inserire nelle prime tre text, (Serie1, Bolla1, Databolla1), se passo due DDT si dovrebbero andare ad inserire nella prime 6 text (Serie1, Bolla1, Databolla1, Serie2, Bolla2, Databolla2)
Le text della serie, numerobolla, e databolla sono 10, (da serie1 a serie10, da numerobolla1 a numerobolla10 e da databolla1 a databolla10) stanno all' interno dei panel.


In vb 6 facevo:

Data2.Recordset.MoveFirst
For iCounter = 0 To 9
With Data2.Recordset
' Nel caso in cui fossimo già arrivati alla fine del recordset lasci la for/next
If Data2.Recordset.EOF = True Then Exit For
Form29.Text1(iCounter).Text = CStr(.Fields("serie").Value)
Form29.Text2(iCounter).Text = .Fields("numero").Value
Form29.Text21(iCounter).Text = .Fields("data").Value

.MoveNext
End With
Next


ma questo in net, come dovrebbe diventare?



Spero che qualcuno possa aiutarmi


Distinti Saluti Fabio Messina

0v3rCl0ck Profilo | Guru

Ciao,

ti consiglio di fare una classe che descrive i dati ke devi ritornare, e poi creare una collezione tipizzata di quella classe, il pulsante di salvataggio deve ritornare come DialogResult il valore OK, quindi dovrai aprire la form che carica i dati con il comando ShowDialog e se questa ti ritorna OK sai ke devi leggere quella collezione, da una proprietà pubblica della form4 ke è collegata ad un membro privato sempre della form4. Il metodo descritto è il più pulito in quanto tutto tipizzato e object oriented, ma nel tuo caso dato ke hai già a disposizione un datatable nn devi fare altro ke crearti la proprietà pubblica su quel dattable.

in allegato cmq ti ho messo l'esempio pratico di come costruirsi una collezione tipizzata, tutta via ti ho anke inserito la modalità con il datatable, inoltre ricorda che per i prossimi progetti quando avrai una griglia che mostra i dati solo in read only ti conviene utilizzare appunto le classi tipizzate e per riempiere la collection un ciclo su DataReader, e poi puoi direttamente associare la collezione alla griglia e vedrai ke da solo ti crea tutte le colonne, ed il codice diventa davvero pulito e preciso!


Enjoy it
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