2017-03-16 4 views
0

Es gibt keinen Fehler in meinem Code und funktioniert einwandfrei, aber wenn das Formular ausgeführt wird, erscheint ein Hinweis: 'Das Formular, auf das während der Konstruktion verwiesen wird, von einer Standardinstanz, die zu unendlicher Rekursion führte. Innerhalb des Formularkonstruktors verweisen Sie auf das Formular mit ME '. Ich weiß, was die Notiz bedeutete, aber mein Code stammt von einer Klasse, wie kann ich ME.DataGridView1 in einer Klasse schreiben. HierWie SystemInvalidOperationException Fehler zu beheben?

ist der Code:

Public Function billing_member_data_grid_radiobutton4_checkchanged() 

    MysqlConn.ConnectionString = ServerString 
    Dim dbDataSet As New DataTable 
    Dim SDA As New MySqlDataAdapter 
    Dim bSource As New BindingSource 

    Try 
     MysqlConn.Open() 

     Dim query As String 

     query = "SELECT user_memberid as 'Member ID',user_firstname as 'First Name',user_middlename as 'Middle Name',user_lastname as 'Last Name',user_birthday as 'Birthday',user_age as 'Age',user_address as 'Address',user_contact as 'Contact Number',user_gender as 'Gender' FROM gym.user" 
     COMMAND = New MySqlCommand(query, MysqlConn) 
     SDA.SelectCommand = COMMAND 
     SDA.Fill(dbDataSet) 
     bSource.DataSource = dbDataSet 
     Billing_Member_Data_Grid.DataGridView1.DataSource = bSource 
     SDA.Update(dbDataSet) 

     MysqlConn.Close() 


    Catch ex As Exception 
     MsgBox(ex.Message) 
    Finally 
     MysqlConn.Dispose() 



    End Try 
    Return True 

End Function 
+1

Drehen ** Option Strict On **. Implementieren Sie 'Using'. Verwenden Sie ** Parameter **. Nur ein paar Hinweise für dich. – Bugs

+0

Erarbeiten Sie diese beiden Funktionen in Ihrem Kontext –

+0

Warum verwenden Sie Funktionen wie Subroutinen? – TonyW

Antwort

1

Sie müssen READER.Close() aufrufen, nachdem Sie fertig sind lesen.

+0

Ich kann es nicht schließen, denn was ist, wenn ich 5 Daten lese und es schließt nach dem Lesen eines – Primitive

+2

Sie haben 2 verschiedene Leser, einer ist in jeder Methode deklariert. Sie sollten die erste schließen, wenn Sie mit dem Lesen fertig sind, und dann wird die zweite in loadtrainer2() verwendet. Sie rufen READER.Close() nach dem "End If" auf, um sicherzustellen, dass alle vorhandenen Daten bereits gelesen wurden. – obl

0

Ist nicht die ganze Idee einer Funktion eine Eingabe zu haben ist und einen Ausgang?

Sie sie wie Unterroutinen behandeln ...

Antwort auf Frage ist entweder: -

  1. Variablen hinzufügen um eine Ausgabe zu erstellen.

oder

  1. Änderung 1 oder beide Funktionen in Unterroutinen ...