Ik ben een programmatje aan het schrijven in VB.net dat communiceet met een database. Ik schrijf dit echter met Disconnected toegang.
Nu heb ik een vraagje dat ik ga stellen met een voorbeeld.
Ik heb 2 tabellen: tblKlanten en tblCategorie.
tblCategorie zijn: 60 plussers, pubers, kinderen, volwassen en bij elke catgegorie moeten ook Klanten kunnen worden gezet deze uit tblKlanten.
Een klant gaat zich inschrijven, geeft zijn geboortedatum(mijn programma berekent de leeftijd en geeft dan intCategorie terug). Nu is mijn vraag als bKlantNr de nummer is van klant hoe kan ik deze in die kolom klanten zetten bij tblCategorie?
jezus, er is echt bijna niets te begrijpen van je verhaal
maar wat ik denk dat jij probeert te doen is om een klantnummer in de tabel categorie te zetten?
dat is niet zoals het hoort, de categorie waartoe een klant behoort hoor je als volgt op te slaan, namelijk de categorie (liefst categorieID), sla je op in het record van de klant in de tabel klanten.
Je haalt dan het ID van de tabel Klanten op aan de hand van de naam die je wilt en dan steek je dat ID in de tabel Categorien. Dit, als ik begrijp wat je bedoelt want je beginpost is heel vaag en de titel zegt ook al niet echt veel. Leg anders nog eens duidelijk en met Nederlands correcte zinnen uit wat je wilt zeggen!
Kijk je hebt 2 tabellen: tblCategorien en tblKlanten.
Je kan je als klant inschrijven, aan de hand van de geboortedatum die je opgeeft word je leeftijd berekent dat je in een categorie zet.
Deze persoon word opgeslagen bij tblKlanten.
Maar het ID van die persoon moet ook bij de Categorie waartoe hij hoort komen te staan in tblCategorien.
Dus dan zou er in je database dit meoten komen staan:
naast het feit dat je vraag niet echt duidelijk is zou ik toch nog eens serieus naar je datamodel kijken, want dat klopt echt niet zoals je het nu doet.
EDIT: ik begrijp nu wel wat je wilt doen, maar je moet geen klantenID's in de categorien tabel gaan opslaan, maar andersom. Je moet het id van de categorie waar die persoon in hoort opslaan in een aparte kolom in je tabel klanten.
naast het feit dat je vraag niet echt duidelijk is zou ik toch nog eens serieus naar je datamodel kijken, want dat klopt echt niet zoals je het nu doet.
EDIT: ik begrijp nu wel wat je wilt doen, maar je moet geen klantenID's in de categorien tabel gaan opslaan, maar andersom. Je moet het id van de categorie waar die persoon in hoort opslaan in een aparte kolom in je tabel klanten.
nu heb je niet het probleem dat als je bijv. een categorie van naam wilt veranderen je tig van records moet gaan aanpassen.
en zo zijn er nog meer voordelen te bedenken.
EDIT: oh ja, leeftijd sla je niet op, maar bereken je altijd a.d.h.v. een geboortedatum, anders moet je elke dag gaan controleren welke personen een dagje ouder zijn geworden.
Ik heb even gevraagt of ik het zo mocht doen en hij zei: die categorieen blijven altijd hetzelfde hetzelfde, alles moet hetzelfde blijven buiten dat je nieuwe klanten kunt maken. Momenteel heb ik dit als code:
Private Sub btnInschrijven_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInschrijven.Click
Try
Dim strNaam As String
Dim dtrow As lolDataSet.tblKlantenRow
Dim drow As lolDataSet.tblCategorieRow
strNaam = txtNaam.Text & " " & txtVoornaam.Text
'maakt de klant aan
dtrow = frmHoofd.dtslol.tblKlanten.Rows.Add
dtrow.NaamSP = strNaam
dtrow.Positie = txtPositie.Text
dtrow.GeboortedatumSP = dtpGebsp.Text
'berekent met de geboortedatum de leeftijd en geeft dan IntCategorie terug
KlantInCategorie(dtpGebsp.Value)
' hier zou het programma de klanten in de juiste categorie moeten zetten, ik wou met insert werken maar ik weet niet waar ik dat hier moet zetten, alles is normaal in orde buiten dit
drow = frmHoofd.dtslol.tblCategorie.Rows.Add
drow.Item("KlantNr") = bKlantNr
frmHoofd.OdaVoetbalploeg.Update(drow)
bKlantNr += 1
MessageBox.Show("Klant is ingeschreven", "Inschrijving", MessageBoxButtons.OK)
frmHoofd.OdaKlanten.Update(dtrow)
Me.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
PrivateSub btnInschrijven_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles btnInschrijven.Click
Try
Dim strNaam AsString
Dim dtrow As lolDataSet.tblKlantenRow
Dim drow As lolDataSet.tblCategorieRow
strNaam = txtNaam.Text&" "& txtVoornaam.Text
'maakt de klant aan
dtrow = frmHoofd.dtslol.tblKlanten.Rows.Add
dtrow.NaamSP= strNaam
dtrow.Positie= txtPositie.Text
dtrow.GeboortedatumSP= dtpGebsp.Text
'berekent met de geboortedatum de leeftijd en geeft dan IntCategorie terug
KlantInCategorie(dtpGebsp.Value)
' hier zou het programma de klanten in de juiste categorie moeten zetten, ik wou met insert werken maar ik weet niet waar ik dat hier moet zetten, alles is normaal in orde buiten dit
drow = frmHoofd.dtslol.tblCategorie.Rows.Add
drow.Item("KlantNr")= bKlantNr
frmHoofd.OdaVoetbalploeg.Update(drow)
bKlantNr +=1
MessageBox.Show("Klant is ingeschreven", "Inschrijving", MessageBoxButtons.OK)
ah, een schoolopdracht dus, leuk zo'n opleiding waar je vanaf het eerste moment gelijk met een fout datamodel op pad gestuurd wordt.
helaas ben ik ook nog maar een beginneling in VB.net, dus ik kan je niet verder helpen, maar er zitten er hier een paar op het forum (waaronder titjes) die heel goed zijn hierin.
Je code ziet er al niet slecht uit, alleen moet je de toewijzing van je variabelen niet in de Try doen. Enkel zaken waar het kan misgaan zoals het connecten met een DB en dergelijke doe je in de Try. In de Catch vang je dan je fouten op en ik zou ook een Finally gebruiken. Hier gebeuren de dingen die ALTIJD worden gedaan, of er nu een fout is of niet.
Op een gegeven moment bereken je al de leeftijd, aan de hand daarvan kan je kijken in welke categorie hij moet. Bijvoorbeeld:
[..code..]
En die 'cat' zet je dan bij de CatID van een klant.
dat is dan gwn van bv. drow.CatID= cat.text
Maar die CatID in tblCategorie s gelinkt aan die CatID in tblKlanten eh, dus dan gaat dat toch eh? Normaal wel, maar ik wil even zekerheid