Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[ASP - Access] Database maken...

Anoniem
None
42 antwoorden
  • Hallo,

    Ik ben momenteel bezig om mijn reeds bestaande (statische) site om te vormen naar een dynamische site, daar de gegevens teveel werden en dan een database toch wel iets handiger is ! :P
    Maar daar wringt nu een beetje het schoentje, ik kan tabellen enzo aanmaken in Acces, geen probleem, maar ik heb het wat moeilijk met wat in welke tabel hoort… M.a.w. welke tabellen kan ik best aanmaken en met welke gegevens.
    Kan iemand mij hiermee een beetje opweg helpen ?
    Het betreft volgende site : http://www.vakantieweetjes.be en dan enkel het gedeelte "hotelbeoordelingen", het forum en fotoalbum blijft zoals het is.

    Alvast bedankt aan diegenen die mij willen verder helpen !!! :lol:

    groetjes,

    Vanessa
  • Tabelnaam (veldnaam, veldnaam, …)

    Continenten (ContinentID, Continent)
    Landen (LandID, ContinentID, Landnaam)
    Plaatsen (PlaatsID, LandID, Plaatsnaam)
    Hotels (HotelID, PlaatsID, Hotelnaam)
    Beoordelingen (BeoordelingID, HotelID, Beoordeling, Naam, Email, …)

    Iedere tabel is dus aan die eronder gerelateerd op gelijkluidende ID-velden.

    Op de eerste pagina zet je de gegevens die je ophaalt met:
    SELECT Landen.*, Continenten.Continent FROM Landen INNER JOIN Continenten ON Landen.ContinentID = Continenten.ContinentID ORDER BY Continent, Landnaam

    Van de landnaam maak je een hyperlink die linkt naar beoordelingen.asp?land=<%=rs("LandID") en in beoordelingen.asp bouw je een check of Request.Querystring("land") <> "" is, waarna je een andere query gebruikt:
    SELECT Plaatsen.*, Landen.Landnaam FROM Landen INNER JOIN Plaatsen ON Plaatsen.LandID = Landen.LandID ORDER BY Landnaam, Plaatsnaam

    en zo verder…
  • Hey !

    Bedankt voor het snelle antwoord ! Ik ben meteen aan de slag gegaan ! Maar bij het overzicht van de hotels per land, maak ik ook nog eens een onderverdeling in de streeks of plaats… (bv. Spanje, is nog eens opgedeeld in de costa's, baleraren…) Dus hier moet ik dan ook een nieuwe tabel voor aanmaken veronderstel ik ?
    tblStreek met streekID, landenID, streeknaam als velden ? En dan bij tblPlaatsen een veld met streekID toevoegen ? Is dit juist geredeneerd ?

    groetjes,
  • Ja klopt. Ik zag op je site al dat het per land kan verschillen of je al dan niet streken hebt. In dat geval kun je misschien ook in tblPlaatsen het veld LandID behouden (naast StreekID). Als je dan een land kiest, dan check je eerst of er streken zijn voor dat land. Zo ja, dan geef je alle streken weer. Zo niet, dan maak je een nieuwe query waarin je de plaatsen laadt en die meteen weergeeft.
  • OK, bedankt !

    Nog iets, de omschrijving, het aantal sterren, website,… van een hotel (hetgeen bovenaan te zien bij een hotelboordeling) kan ik dat ook gewoon in de tabel van de hotels zetten hé ?
    Dus : Hotels (HotelID, PlaatsID, Hotelnaam, Omschrijving, Sterren, verblijf, website, foto)

    groetjes,
  • Ja. Alles wat specifiek voor het hotel is zet je in de hoteltabel, bijv. ook zwembad ja/nee, rolstoelvriendelijk, strandafstand, etc.
  • Ik heb de tabellen nu klaar, denk ik… De relaties heb ik ondertussen ook klaar. Wil je effe checken of ik het juist gedaan heb en of ik genoeg relaties gelegd heb ?

    Relaties

    Als je iets krijgt van wachtwoord in te vullen moet je gewoon annuleren…

    groetjes,
  • Ziet er goed uit hoor :-)
  • Dank je wel !
    Als ik nu m'n pagina's nog klaar krijg ben ik de gelukkigste mens ter wereld !!!

    Alvast hartelijk dank voor de hulp !! :wink:

    groetjes,

    PS: Loop maar niet te ver weg, want waarschijnlijk zit ik zo dadelijk toch weer vast ! :) Ik ben dan ook nog maar in de leerfase van ASP…
  • Ik zit al gelijk met een probleem…
    Ik heb de database connectie goed gemaakt (connection was made succesfully) maar als ik dan op een tabel klik in de connectie komt er "none" . Ik kan ook geen recordset maken omdat ie geen tabellen vind…
    En daarstraks heb ik de tabellen wel te zien gekregen ! dat is nog het strafste van al !

    Aan wat kan dit liggen ? Alles is goed geupload…

    groetjes,
  • Gebruik je ASP.NET?

    Ik doe classic asp en mijn recordsets als volgt:

    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\www.site.nl\data\dbase.mdb;"

    set rs = Server.CreateObject("ADODB.Recordset")

    rs.Open "SELECT …", conn
    do while not rs.EOF

    rs.MoveNext
    loop
    rs.Close

    set rs = Nothing
    conn.Close: Set conn = Nothing

    Ik snap niet wat je bedoelt met "op een tabel klik in de connectie"
  • Ja, ik heb me daar misschien wat simplistisch uitgedrukt… Ik bedoel dus in Dreamweaver, als je in het "applicatievenster" op het plusje klikt van je connectie dan krijg je normaal een overzicht van je tabellen, maar bij mij staat er bij tables dus "none" ipv mijn tabellen.
    De connectie opzich is juist, dat geeft de test in Dreamweaver ook aan…
    En nee, ik gebruik niet ASP.NET, wel ASP VBscript…
  • Geen idee hoe dat in dreamweaver werkt. Misschien heb je de dbase nog geopend/gelockt/exclusief. Comprimeren van de dbase en daarna sluiten wil ook nog wel es een verschil maken. Nieuwe sessie starten (uitloggen in Windows) ook wel. Misschien zegt dreamweaver dat ie de tabel niet kan vinden omdat ie leeg is?
  • Maar daarstraks gaf Dreamweaver de tabellen wel weer… Dat vind ik zo raar !
  • Ik heb net nog eens geprobeerd en nu krijg ik de tabellen wel te zien… snappe wie snappe kan !
    Maar het volgende probleem is dat ik geen recordset kan maken ! Als ik er eentje probeer aan te maken, staat de connectie wel vermeld maar de tabellen krijg ik niet te zien.
    Ik krijg de volgende melding :" Unable to retrieve tables from this connection. Click on the Define… button to test the connection."
    En als ik dit dan doe krijg ik de melding dat connectie goed gemaakt is !!
    Ik snap het niet meer hoor !!

    iemand enig idee ?…
  • [quote:3b913ffac1="vanessa"]Ik heb de tabellen nu klaar, denk ik… De relaties heb ik ondertussen ook klaar. Wil je effe checken of ik het juist gedaan heb en of ik genoeg relaties gelegd heb ?

    Relaties

    Als je iets krijgt van wachtwoord in te vullen moet je gewoon annuleren…

    groetjes,[/quote:3b913ffac1]

    Heb je niet iets teveel relaties?

    Je gaat van Land naar Streek naar Stad, maar dan ook nog eens van Land direct naar Stad. Volgens mij gaat dat problemen opleveren.
  • Dat maakt niks uit, anders zou de database een definitie van een dergelijke relatie wel weigeren. Een land als Monaco heeft toch geen streken?

    Als je het een tree hoger bekijkt, dan hoort ook niet iedere ster bij een sterrenstelsel (Clusters, Stelsels, Sterren). Of als dat te hoog is, dan draaien niet alle objecten in een sterrensysteem om een planeet (Sterren, Planeten, Objecten). Zelfde soort relaties.
  • Monaco zal best geen streken hebben maar er moet toch iets ingevuld worden want het is een sleutel.

    En dan zie ik niet waarom er een dubbele relatie moet zijn.
  • Ja, heb je gelijk in, even niet aan gedacht :oops: Streekloze plaatsen werkt alleen als je maar 2 tabellen gebruikt als gegevensbron. Dat zou je op basis van een veld in Landen kunnen doen (Landen.UseStreken YESNO). Misschien wringt daar de schoen. Dus:

    If rs("UseStreken") Then
    rs.Open "SELECT * FROM Streken INNER JOIN Plaatsen ON Streken.ID = Plaatsen.Streek WHERE Streken.Land = " & Request.Querystring("land"), conn
    else
    rs.Open "SELECT * FROM Plaatsen WHERE Land = " & Request.Querystring("land"), conn
    end if

    Hoef je je relaties niet voor aan te passen, maar misschien wel je query.
  • Ik zou het anders aanpakken. Gewoon een hiërarchisch systeem. (is gewoon het beste systeem, ook qua onderhoud)

    Continent > land > streek > stad > hotel > beoordeling.
    Allemaal 1:[i:27d46ee672]n[/i:27d46ee672]-relaties.

    Als bijvoorbeeld Monaco - zonder streken - voer je nogmaals in: Monaco. En dat gedeelte toon je niet als Land en Streek identiek zijn.
    Je kunt in streken ook Provincies invullen … of beide samen:

    Voorbeeld: Ik woon in Sneek, Fryslân. en de streek is Zuidwesthoek.

    Dan doe je zoiets als [i:27d46ee672]Fryslân, Zuidwesthoek[/i:27d46ee672] bij het onderdeeltje Streek(naam).


    Of, je hangt Streek alleen aan Stad.

    Maar hoe dan ook, de huidige opzet zou ik niet kiezen.

    Eigenlijk is mij eerste optie het beste. Want stel nou eens dat je de hele wereld in een database hebt staan en je besluit geen beoordelingen over hotels in Afrika meer op te nemen en ze zelfs niet meer te gebruiken. Je klikt op Afrika > verwijderen en alle onderliggende records worden automatisch verwijderd (mits je die opties aangevinkt hebt natuurlijk)

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.