Multidesk.be » Forums » .Net » Probleem met een waarde van een variable door te geven.

  • Pagina
  • 1 van 1
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door een gast op donderdag 14 juni 2007 om 15:13:38.
In deze klasse clsuserdata wil ik de waarden miGebruikerID dat ik onder public sub ok (zie ??????) opvraag gebruiken in public sub loggen(zie--------).
Public sub loggen roep ik op in een andere klasse als ik nu migebruikerID wil gebruiken in public sub loggen krijg ik altijd de waarde 0.

Hoe kan ik ervoor zorgen dat ik miGebruikerID kan gebruiken in public sub loggen?

CODE
  1. Imports system.Data.oledb
  2.  
  3. Public Class clsUserdata
  4.  
  5.     Private msVoornaam As String
  6.     Private msNaam As String
  7.     Private msGebruikersnaam As String
  8.     Private msWachtwoord As String
  9.     Private moDebietLoggen As clsPLC
  10.     Private miDebiet1 As Integer
  11.     Private miDebiet2 As Integer
  12.     Private mPaswoord As Boolean = False
  13.     Private msBedrijf As String
  14.     Private miGebruikerID As Integer
  15.     Private moCnn As OleDbConnection
  16.     Private oCmd As OleDbCommand
  17.     Private oDR As OleDbDataReader
  18.     Private miTeller As Integer
  19.     Private oDT As DataTable
  20.  
  21.     Public Sub ok(ByVal Gebruikersnaam As String, ByVal Wachtwoord As String)
  22.  
  23.         msGebruikersnaam = Gebruikersnaam
  24.         msWachtwoord = Wachtwoord
  25.  
  26.         '1.1 connection
  27.         Dim sConnectionString As String
  28.         sConnectionString = "File Name=" & Application.StartupPath & " \verbinding_UserData.udl"
  29.  
  30.         'De gebruiker moet iets ingeven
  31.         'If moLogin.GeefGebruikersnaam = "" Or moLogin.GeefPaswoord = "" Then
  32.  
  33.  
  34.         '    MessageBox.Show("Er zijn gegevens tekort. Zorg ervoor dat het paswoord en de gebruikersnaam zijn ingevuld")
  35.  
  36.  
  37.         'End If
  38.  
  39.         '1.2
  40.         moCnn = New OleDbConnection(sConnectionString)
  41.         '1.3
  42.         moCnn.Open()
  43.         '2.1 Command
  44.         Dim sSQL As String
  45.         sSQL = "SELECT pID, pNaam, pVoornaam, pWachtwoord, bNaam FROM Persoon, Bedrijf WHERE Bedrijf.bID = Persoon.pbID and pNaam = '" & msGebruikersnaam & "'AND pWachtwoord = '" & msWachtwoord & "'"
  46.  
  47.         oCmd = New OleDbCommand(sSQL, moCnn)
  48.  
  49.         '2.2 datareader
  50.         Dim oDR As OleDbDataReader
  51.         oDR = oCmd.ExecuteReader
  52.  
  53.         Do While oDR.Read
  54.             If msWachtwoord = oDR.Item("pWachtwoord") And msGebruikersnaam = oDR.Item("pNaam") Then
  55.                 mPaswoord = True
  56.             End If
  57.             msNaam = oDR.Item("pNaam").ToString
  58.  
  59.             msVoornaam = oDR.Item("pVoornaam")
  60.             msBedrijf = oDR.Item("bNaam")
  61.            ???????????????????????????????????????????????????????????????????????
  62.  miGebruikerID = oDR.Item("pID")
  63.         Loop
  64.  
  65.         If mPaswoord = False Then
  66.             MessageBox.Show("Ongedige gebruikernaam of wachtwoord, Probeer opnieuw")
  67.         End If
  68.  
  69.         '2,5
  70.         oDR.Close()
  71.     End Sub
  72.  
  73.  
  74.     Public ReadOnly Property Wachtwoordcontrole() As Boolean
  75.  
  76.         Get
  77.             Return mPaswoord
  78.  
  79.         End Get
  80.     End Property
  81.    
  82.     Public ReadOnly Property GeefVoornaam()
  83.  
  84.         Get
  85.             Return msVoornaam
  86.         End Get
  87.     End Property
  88.     Public ReadOnly Property GeefNaam()
  89.  
  90.         Get
  91.             Return msNaam
  92.         End Get
  93.     End Property
  94.  
  95.     Public ReadOnly Property GeefBedrijf()
  96.  
  97.         Get
  98.             Return msBedrijf
  99.  
  100.         End Get
  101.     End Property
  102.  
  103.     Public ReadOnly Property GeefID()
  104.  
  105.         Get
  106.             Return miGebruikerID
  107.  
  108.         End Get
  109.     End Property
  110.  
  111. -----------------------------------------------------------------------------------------------
  112.     Public Sub loggen(ByVal Debiet1 As Integer, ByVal Debiet2 As Integer)
  113.         dim id as integer
  114.         id=  miGebruikerID
  115.  
  116.         Dim sConnectionString As String
  117.         sConnectionString = "File Name=" & Application.StartupPath & " \verbinding_UserData.udl"
  118.  
  119.  
  120.         moCnn = New OleDbConnection(sConnectionString)
  121.         '1.3
  122.         moCnn.Open()
  123.         miTeller = 1
  124.         zoekplaats()
  125.  
  126.         Dim ID As Integer
  127.         ID = miGebruikerID
  128.  
  129.         Dim sSQL As String
  130.         sSQL = "INSERT INTO Meting VALUES (" & miTeller & ",2 ," & Debiet1 & "," & Debiet2 & ",now )"
  131.  
  132.         oCmd = New OleDbCommand(sSQL, moCnn)
  133.  
  134.         oCmd.ExecuteNonQuery()
  135.  
  136.         '    '2.2 datareader
  137.  
  138.         'oDR.Close()
  139.  
  140.  
  141.     End Sub
  142.  
  143.     Public Sub zoekplaats()
  144.         Dim sSQl As String
  145.         sSQl = "Select mID from meting"
  146.         Dim ocmd As OleDbCommand
  147.         ocmd = New OleDbCommand(sSQl, moCnn)
  148.  
  149.         Dim oDR As OleDbDataReader
  150.         oDR = ocmd.ExecuteReader
  151.         Do While oDR.Read
  152.             miTeller = miTeller + 1
  153.         Loop
  154.     End Sub
  155.  
  156.     Public Sub ID()
  157.  
  158.         Dim sSQl As String
  159.         sSQl = "Select pID from persoon Where pNaam = '" & msGebruikersnaam & "'"
  160.         Dim ocmd As OleDbCommand
  161.         ocmd = New OleDbCommand(sSQl, moCnn)
  162.  
  163.         Dim oDR As OleDbDataReader
  164.         oDR = ocmd.ExecuteReader
  165.  
  166.     End Sub
  167.  
  168.     Public Sub ToonTabel()
  169.         Dim sConnectionString As String
  170.         sConnectionString = "File Name=" & Application.StartupPath & " \verbinding_UserData.udl"
  171.  
  172.         moCnn = New OleDbConnection(sConnectionString)
  173.         '1.3
  174.         moCnn.Open()
  175.         '2.1
  176.         Dim sSQL As String
  177.         sSQL = "SELECT mDebietLeiding1, mDebietLeiding2, mTijdstip From Meting"
  178.         'where mpID=1
  179.         Dim oCmd As OleDbCommand
  180.         oCmd = New OleDbCommand(sSQL, moCnn)
  181.  
  182.         '2.2
  183.         Dim oDA As OleDbDataAdapter
  184.         oDA = New OleDbDataAdapter(oCmd)
  185.         '3.3
  186.         Dim oDT As DataTable
  187.         oDT = New DataTable
  188.         '2.4
  189.         oDA.Fill(oDT)
  190.  
  191.  
  192.         '2.5
  193.         frmSupervisie.dgrTabel.DataSource = oDT
  194.         frmSupervisie.dgrTabel.AutoResizeColumns()
  195.  
  196.  
  197.     End Sub
  198.    
  199. End Class

;)

Opmerking van de crew

Structuur in een code kan soms wel wonderen doen. Heb daarom de overtollige enters verwijderd en de Code tag toegepast ;).
SMG
^ Reactie #1 geschreven door thekid op donderdag 14 juni 2007 om 15:28:43.
thekid's avatar
Multiviteit: 5273
Moderator
ik ga direct eens meekijken, vanaf het moment het in een code blok staat
1 opmerking

waarom gebruik je niet de superhandige parameters ipv uw variabele waarden overal tussen te "foefelen?"

CODE
  1.  
  2. sSQL = "SELECT pID, pNaam, pVoornaam, pWachtwoord, bNaam FROM Persoon, Bedrijf WHERE Bedrijf.bID = Persoon.pbID and pNaam = ? AND pWachtwoord = ?
  3.  
  4. using oCmd as oleDbDataAdapter = new OleDbDataAdapter(sSql, connectieNaarDB)
  5.  
  6.   oCmd.SelectCommand.Parameters.AddWithValue("@p1", msGebruikersnaam)
  7.   oCmd.SelectCommand.Parameters.AddWithValue("@p2", msWachtwoord)
  8.  
  9.   using resultSet as DataTable = new DataTable()
  10.      oCmd.fill(resultSet)
  11.      Dim d as DataRow
  12.      for each d in resultSet.rows
  13.           msNaam = d["pNaam"].ToString()
  14.           msVoornaam = d["pVoornaam"].ToString()
  15.           msBedrijf = d["bNaam"].ToString()
  16.           miGebruikerID = Convert.ToInt32(d["pID"])
  17.      next
  18.   end using
  19. end using
  20.  


da leest toch al iets beter niet?

probeer eens de using statement (ik hoop dat die bestaat in vb.net), en een DataTable is vrij handig om een recordset te overlopen

*edit*
Normaal gezien werken bovenstaande statements in VB.net
Deze tekst werd het laatst bewerkt voor 2.81 % door thekid op donderdag 14 juni 2007 om 15:45:20.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #2 geschreven door NightCreature op donderdag 14 juni 2007 om 15:40:02.
NightCreature's avatar
Multiviteit: 1196
MSc.

Randinformatie

Daarnaast heeft forum software zoiets als tags uitgevonden dat dit soort posts een stuk leesbaarder maakt.

FF algemene tip readability is erg belangrijk in de it sector
Deze tekst werd het laatst bewerkt voor 22.56 % door NightCreature op donderdag 14 juni 2007 om 15:49:39.
I need thought completion.
Shaders, een beetje vreemd maar wel lekker (voor de ogen dan he)
2.83Ghz Q9550 HD4850 512MiB 4GiB 1333Mhz DDR3 RAM
http://paulintheuk.blogspot.com
FE Programmer @ Codemasters (Front End)
^ Reactie #3 geschreven door thekid op donderdag 14 juni 2007 om 15:46:32.
thekid's avatar
Multiviteit: 5273
Moderator

Dixit

Dixit NightCreature op 14/06/2007 15:40:02:

Randinformatie

Daarnaast heeft forum software zoiets als tags uitgevonden dat dit soort posts een stuk leesbaarder maakt.


Randinformatie


Niet te doen, hé :D :D

@gast
gelieve codeblocken tussen
[ CODE ] uw code [ /CODE ] te plaatsen (zonder de spaties tussen de [ ] natuurlijk ;)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #4 geschreven door NightCreature op donderdag 14 juni 2007 om 15:51:05.
NightCreature's avatar
Multiviteit: 1196
MSc.

Dixit

Dixit thekid op 14/06/2007 15:46:32:

Dixit

Dixit NightCreature op 14/06/2007 15:40:02:

Randinformatie

Daarnaast heeft forum software zoiets als tags uitgevonden dat dit soort posts een stuk leesbaarder maakt.


Randinformatie


Niet te doen, hé :D :D

@gast
gelieve codeblocken tussen
[ CODE ] uw code [ /CODE ] te plaatsen (zonder de spaties tussen de [ ] natuurlijk ;)

Ja idd, maar nou vind ik VB.NET code toch al bijna net leesbaar. Ben C/C++ gewend en vind ik toch een stuk lekkerder lezen. Maarja
I need thought completion.
Shaders, een beetje vreemd maar wel lekker (voor de ogen dan he)
2.83Ghz Q9550 HD4850 512MiB 4GiB 1333Mhz DDR3 RAM
http://paulintheuk.blogspot.com
FE Programmer @ Codemasters (Front End)
^ Reactie #5 geschreven door thekid op donderdag 14 juni 2007 om 15:58:03.
thekid's avatar
Multiviteit: 5273
Moderator

Randinformatie


@SMG

thx, ge zijt een schat ;)


'k ga da spel nu eens beter bekijken zie :D

*edit*
Bij nader inzien

je code vind ik nogal raar, in die functie loggen declareer je eens een id as integer daarna een ID as integer, er staat dan ook nog een sub ID() genaamd, ik zou eens beginnen met een mooiere structuur in je code te steken, overal de using te gaan gebruiken (die ruimt het geheugen op eens je aan end using komt, moet je niet zelf gaan disposen (wat je nu al niet doet :s)), parameters gebruiken in je commando's / oledbdataAdapters

er staat dan nog een geefID() property, maar toch vraag je in je code de miGebruikerID op (als je dan toch properties in je klasse steekt, gebruik ze dan :p)


DUS EERSTE TIP, DUIDELIJK CODEN ;)

Opmerking van de crew

Dat hoor ik wel vaker :D
SMG
Deze tekst werd het laatst bewerkt voor 78.14 % door thekid op donderdag 14 juni 2007 om 16:05:50.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #6 geschreven door NightCreature op vrijdag 15 juni 2007 om 02:11:51.
NightCreature's avatar
Multiviteit: 1196
MSc.
met net leesbaar bedoelde ik dus niet leesbaar lol.

Thekid een dispose is geen destructor. Besides in .NET is een dispose ook niet verplicht. Zorg er gewoon voor dat je netjes met je resources omgaat. Het is geen C/C++ he.

@SMG readability is better then functionality for it means maintainability
Deze tekst werd het laatst bewerkt voor 0.17 % door NightCreature op vrijdag 15 juni 2007 om 02:16:02.
I need thought completion.
Shaders, een beetje vreemd maar wel lekker (voor de ogen dan he)
2.83Ghz Q9550 HD4850 512MiB 4GiB 1333Mhz DDR3 RAM
http://paulintheuk.blogspot.com
FE Programmer @ Codemasters (Front End)
  • Pagina
  • 1 van 1

Snel-antwoordformulier
Toon uitgebreid antwoordformulier Bericht nalezen Bericht plaatsen