| 3 | | In dit scherm kunt u één of meer SQL-queries definiëren en uitvoeren. Queries die u aanmerkt |
| 4 | | als '''publiek''' zijn voor alle gebruikers van OpenAC toegankelijk die toegang hebben tot |
| 5 | | managementrapportages. |
| | 3 | [[Image(sqlq1.png, class=inline-right)]]Het ''SQL Query'' scherm maakt het mogelijk om willekeurige |
| | 4 | queries op de database uit te voeren. De queries kunnen ook |
| | 5 | worden opgeslagen voor hergebruik, of beschikbaar gesteld |
| | 6 | worden aan gebruikers (bijvoorbeeld voor een zelf-gemaakte rapportage |
| | 7 | of controlelijst). De queries worden opgeslagen in de |
| | 8 | database en worden door backups bewaard. De uitvoer van een |
| | 9 | query kan worden geexporteerd naar Excel zoals elke andere |
| | 10 | rapportage. |
| | 11 | |
| | 12 | Het is mogelijk om in een query bijzondere beheer-acties |
| | 13 | uit te voeren die onder andere omstandigheden niet mogelijk zijn; |
| | 14 | deze functionaliteit is voorbehouden aan de OpenAC beheerder. |
| | 15 | |
| | 16 | Het ''SQL Query'' scherm wordt opgeroepen met de knop in |
| | 17 | de beheers-box van het startscherm. |
| | 18 | |
| | 19 | == Lijstweergave == |
| | 20 | |
| | 21 | Het ''SQL Query'' scherm laat de lijstweergave maar weinig zien: |
| | 22 | een knop [[Image(wiki:WikiStart:callout-1.png)]] ''Nieuwe query invoeren'' |
| | 23 | om queries in te voeren en een lijst [[Image(wiki:WikiStart:callout-2.png)]] |
| | 24 | van reeds aangemaakte queries. Dubbelklik op een bestaande query |
| | 25 | om die query uit te voeren of te bewerken. De OpenAC beheerder kan |
| | 26 | ook queries verwijderen. |
| | 27 | |
| | 28 | [[Image(sqlq2.png)]] |
| | 29 | |
| | 30 | == Query Bewerken == |
| | 31 | |
| | 32 | In het scherm om queries te bewerken kan je een ''naam'' [[Image(wiki:WikiStart:callout-1.png)]] invoeren |
| | 33 | voor de query -- deze naam is zichtbaar voor gebruikers als ''publiek'' |
| | 34 | [[Image(wiki:WikiStart:callout-2.png)]] ook is aangevinkt. |
| | 35 | Queries waarvoor ''publiek'' aanstaat, zijn voor '''alle''' gebruikers |
| | 36 | te gebruiken vanuit het hoofdscherm onder de knop ''Query''[[Image(sqlq4.png, class=inline-right)]]. |
| | 37 | |
| | 38 | [[Image(sqlq3.png)]] |
| | 39 | |
| | 40 | De query zelf is in te vullen in het grote tekstvak [[Image(wiki:WikiStart:callout-3.png)]]. |
| | 41 | Hier moet een geldige query staan in het SQL dialect van de database server die door |
| | 42 | OpenAC gebruikt wordt (dit is met name van belang bij queries die data-bewerkingen uitvoeren |
| | 43 | in de query zelf). |
| | 44 | De query mag over meerdere regels verspreid worden. |
| | 45 | Er hoeft geen puntkomma (`;`) aan het eind te staan. |
| | 46 | In enkele gevallen (`DELETE` en `UPDATE` queries) is het mogelijk om meerdere |
| | 47 | SQL statements in te voeren, gescheiden door puntkommas, maar dit wordt zelden gebruikt. |
| | 48 | |
| | 49 | Het is mogelijk om ''query parameters'' te gebruiken; dit zijn waardes |
| | 50 | die OpenAC bij het uitvoeren van de query aan de gebruiker vraagt |
| | 51 | and dan in de SQL statement ingevuld worden. Query parameters |
| | 52 | worden aangegeven met een ''parameter naam'' tussen dubbele accolades |
| | 53 | (`{{` en `}}`). Dezelfde parameter naam mag meerdere malen gebruikt |
| | 54 | worden in de query, dan wordt die maar een keer gevraagd, en het is mogelijk om meerdere |
| | 55 | query parameters te gebruiken. |
| | 56 | |
| | 57 | Onder het tekstvak voor de query is een veld ''maximum aantal'' waarmee |
| | 58 | de uitvoer van de query wordt beperkt. OpenAC gebruikt dan de eerste |
| | 59 | zoveel records die uit de query komen om de rapportagesheet op te stellen. |
| | 60 | '''Let op''' dat hiermee niet de query zelf beperkt wordt; gebruik daarvoor |
| | 61 | in de query (afhankelijk van het dialect) `LIMIT` of `TOP`. Als je dat niet doet, |
| | 62 | wordt een query als `SELECT * FROM patient_data` erg langzaam, zelfs als je maar |
| | 63 | 10 records in de sheet opneemt. |
| | 64 | |
| | 65 | Een query kan vanuit dit bewerkingsscherm worden opgeslagen voor hergebruik, |
| | 66 | of ook direct worden uitgevoerd door op de knop ''uitvoeren'' te klikken. |
| | 67 | Hiermee kan een query ook worden getest voordat die wordt opgeslagen. |
| | 68 | |
| | 69 | == Query Voorbeeld == |
| | 70 | |
| | 71 | Deze hele eenvoudige query vertelt hoeveel patienten er in de |
| | 72 | database staan: |
| | 73 | |
| | 74 | {{{ |
| | 75 | SELECT COUNT(1) FROM patient_data |
| | 76 | }}} |
| | 77 | |
| | 78 | Deze query vertelt hoeveel patienten er zijn met de geboortedatum |
| | 79 | 7 februari 1976 (in de database staan datums in ''YYYY-MM-DD'' opgeschreven): |
| | 80 | |
| | 81 | {{{ |
| | 82 | SELECT COUNT(1) FROM patient_data |
| | 83 | WHERE patient_geboortedatum = '1976-02-07' |
| | 84 | }}} |
| | 85 | |
| | 86 | Het is natuurlijk onhandig om deze query om de haverklap aan te passen |
| | 87 | om de datum te veranderen (bijvoorbeeld om patienten te vinden |
| | 88 | van 29 december 1971), dus we kunnen de query aanpassen zodat |
| | 89 | OpenAC er om vraagt voordat de query wordt uitgevoerd: |
| | 90 | |
| | 91 | {{{ |
| | 92 | SELECT COUNT(1) FROM patient_data |
| | 93 | WHERE patient_geboortedatum = '{{geboortedatum}}' |
| | 94 | }}} |
| | 95 | |
| | 96 | Merk op dat de parameter naam '''binnen''' de SQL-aanhalingstekens staat: |
| | 97 | anders zou je als onderdeel van de geboortedatum die ook moeten invoeren. |
| | 98 | OpenAC vervangt alleen de parameter naam met datgene door de gebruiker |
| | 99 | wordt ingevoerd. |
| | 100 | |
| | 101 | == Publieke Queries == |
| | 102 | |
| | 103 | [[Image(sqlq4.png, class=inline-right)]]Queries die ''publiek'' zijn worden aan '''alle''' gebruikers beschikbaar |
| | 104 | gesteld. Deze queries zijn te vinden onder de knop ''Query'' in het hoofdscherm. |
| | 105 | Als op deze knop gedrukt wordt, kan de gebruiker een keus maken |
| | 106 | uit alle beschikbare queries: |
| | 107 | |
| | 108 | [[Image(sqlq5.ong)]] |
| | 109 | |
| | 110 | Als de query is uitgekozen en de gebruiker op OK klikt, |
| | 111 | dan worden de parameters van de query (als die er zijn) |
| | 112 | gevraagd. In dit voorbeeld is het een query met twee |
| | 113 | parameters, ''geboortedatum'' en ''achternaam''. Als die zijn |
| | 114 | ingevuld wordt de query uitgevoerd en de resultaten getoond. |
| | 115 | |
| | 116 | [[Image(sqlq6.png)]] |