[VB 6] Productselectie dmv 3 combo's

Pagina: 1
Acties:
  • 45 views sinds 30-01-2008

  • fluppie007
  • Registratie: April 2005
  • Laatst online: 28-11 11:17
Ik wil dus een bepaald product kiezen dmv categorie ID en product ID
Als ik nu een categorie kies ( Combo1 ) komen in combo 2 alle merken voor die in die categorie voorkomen.
Nu is de bedoeling dat als ik nu ook nog een merk kies dat de 3e Combo alle producten van dat
merk toont. Vreemde is dat combo1 en 2 perfect weergeven wat ze moeten en combo3 steeds
leeg blijft. Doch is de opzet voor Combo3 te vullen helemaal hetzelfde. En de SQL string die gegeneerd wordt lijkt mij ook juist ( al vind ik het vreemd wanneer ik deze in access invul niet terug krijg wat ik wil, dus waarschijnlijk is die fout ). VB genereert geen errors bij deze acties.
Maakt het foutzoeken weer moeilijker :/

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Private Sub Form_Load()
CategoryData.DatabaseName = App.Path & "\database97.mdb"

CategoryData.DatabaseName = App.Path & "\database97.mdb"
CategoryData.RecordSource = "SELECT DISTINCT Categories.CategoryID, Categories.CategoryName FROM Categories ORDER BY Categories.CategoryName;"
CategoryData.Refresh

Categories.Refresh
End Sub

Private Sub Categories_Click(Area As Integer)
Brands.Text = ""

Dim StringCategorie As String

StringCategorie = "SELECT DISTINCT Brands.BrandID, Brands.BrandName, Categories.CategoryID FROM Brands INNER JOIN (Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID) ON Brands.BrandID = Products.BrandID WHERE Categories.CategoryID =" & _
Categories.BoundText & _
";"

BrandData.DatabaseName = App.Path & "\database97.mdb"
BrandData.RecordSource = StringCategorie
Text1.Text = StringCategorie
BrandData.Refresh

Brands.Refresh
Brands.Enabled = True
End Sub

Private Sub Brands_Click(Area As Integer)
Products.Text = ""

Dim StringBrand As String

StringBrand = "SELECT DISTINCT Brands.BrandID, Brands.BrandName, Categories.CategoryID FROM Brands INNER JOIN (Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID) ON Brands.BrandID = Products.BrandID WHERE ((Categories.CategoryID=" & _
Categories.BoundText & _
") AND (Brands.BrandID=" & _
Brands.BoundText & _
"));"

ProductData.DatabaseName = App.Path & "\database97.mdb"
ProductData.RecordSource = StringBrand
Text2.Text = StringBrand
'ProductData.Refresh        'Geeft errors wanneer je na een selectie van een merk je categorie weer wijzigt

Products.Refresh
Products.Enabled = True
End Sub


Hieronder is de frm en de db toegevoegd, mijn access query's zitten hier ook in.

www.disney.com

[ Voor 1% gewijzigd door RobIII op 29-12-2006 16:26 ]


Verwijderd

fluppie007 schreef op vrijdag 29 december 2006 @ 12:39:al vind ik het vreemd wanneer ik deze in access invul niet terug krijg wat ik wil, dus waarschijnlijk is die fout.
Dus de volgende stap die je onderneemt lijkt mij het verminderen van de parameters in de query totdat je wel resultaten terug krijgt.

  • fluppie007
  • Registratie: April 2005
  • Laatst online: 28-11 11:17
Haha wat ben ik dom geweest ( foute SQL instructie gebruikt O-) , iets te veel copy/paste gedaan )
Nu heb ik dus enkel nog een error wanneer ik een selectie heb gemaakt, ik bv mijn categorie wijzig.

Runtime error 3075 : extra ) in query expression


Deze code doet het wel:
[CODE=vb]
Private Sub Form_Load()
CategoryData.DatabaseName = App.Path & "\database97.mdb"

CategoryData.DatabaseName = App.Path & "\database97.mdb"
CategoryData.RecordSource = "SELECT DISTINCT Categories.CategoryID, Categories.CategoryName FROM Categories ORDER BY Categories.CategoryName;"
CategoryData.Refresh

Categories.Refresh
End Sub

Private Sub Categories_Change()
Brands.Text = ""

Dim StringCategorie As String

StringCategorie = "SELECT DISTINCT Brands.BrandID, Brands.BrandName, Categories.CategoryID FROM Brands INNER JOIN (Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID) ON Brands.BrandID = Products.BrandID WHERE Categories.CategoryID =" & _
Categories.BoundText & _
";"

BrandData.DatabaseName = App.Path & "\database97.mdb"
BrandData.RecordSource = StringCategorie
Text1.Text = StringCategorie
BrandData.Refresh

Brands.Refresh
Brands.Enabled = True
End Sub

Private Sub Brands_Change()
Products.Text = ""

Dim StringBrand As String

StringBrand = "SELECT DISTINCT Categories.CategoryID, Brands.BrandID, Products.ProductID, Products.ProductName FROM Brands INNER JOIN (Categories INNER JOIN Products ON Categories.CategoryID=Products.CategoryID) ON Brands.BrandID=Products.BrandID WHERE ((Categories.CategoryID=" & _
Categories.BoundText & _
") AND (Brands.BrandID=" & _
Brands.BoundText & _
"));"

ProductData.DatabaseName = App.Path & "\database97.mdb"
ProductData.RecordSource = StringBrand
Text2.Text = StringBrand
ProductData.Refresh 'Geeft errors wanneer je na een selectie je categorie wijzigt

Products.Refresh
Products.Enabled = True
End Sub
[/CODE=vb]

Verwijderd

Print je queries uit, en voer ze uit. Dan kom je er achter wat er mis gaat.

  • fluppie007
  • Registratie: April 2005
  • Laatst online: 28-11 11:17
Probleem zit hem niet meer in de queries, die doen het. Probleem is dat wanneer je een Categorie, Merk & Product hebt gekozen je een error krijgt als je de categorie wijzigt. Je kan wel na een volledige selectie je merk veranderen, dit lukt wel. Maar vanaf ik aan de categoriecombo kom loopt hij vast met runtime error 3075 als je dan debugt markeert hij regel 43.
hij toont dan ook een stuk uit de query van Brands terwijl hij overigens een andere query moet gebruiken... Ergens in de knoei met strings en query in het geheugen ?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
fluppie007 schreef op vrijdag 29 december 2006 @ 13:06:
Runtime error 3075 : extra ) in query expression
Wat is daar zo onbegrijpelijk aan?
fluppie007 schreef op vrijdag 29 december 2006 @ 13:48:
hij toont dan ook een stuk uit de query van Brands terwijl hij overigens een andere query moet gebruiken... Ergens in de knoei met strings en query in het geheugen ?
Zoals gezegd: print je queries eens. En "Ergens in de knoei met strings en query in het geheugen?" kun je makkelijk debuggen als je eens gewoon stap voor stap met je debugger door je code loopt en her en der een watch op zet of tussentijdse waardes print.

Programmeren is ook leren debuggen en dat mis ik zo'n beetje in al je topics in PRG; we zijn hier niet om voor jou je code te debuggen; dat hoor je als programmeur zélf te doen.

Ook het inpakken van je code in een rarfile (1 frm en je db is overigens niet voldoende ;) ) en dan bij je TS zetten is niet wenselijk; we zijn er niet (zoals we je al vaker hebben verteld) om je code voor je te debuggen; ik zie dan ook niet wat het voor nut heeft om je code bij te sluiten. Je kunt niet van ons verwachten dat we wel even een "gecorrigeerde versie" voor je online zetten.

Daarnaast zie ik nogal wat dubbele stuff in je code; waarom wrap je dat niet in een functie ofzo die je dan een parametertje (je query en het ado object bijv.) meegeeft; dat maakt je code een stuk leesbaarder (evenals het inspringen van je code). Je topic(s) zijn nogal basic en ik merk gewoon dat je nog wat basiskennis mist; dat is geen ramp (we zijn immers allemaal zo moeten beginnen), maar ik adviseer je wel nog eens wat tutorials, boeken en dat soort dingen door te werken/worstelen; dit niveau is om eerlijk te zijn niet echt een PRG topic waardig, laat staan dat we je all-the-way aan je handje gaan houden.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.