= SQL Query = [[Image(sqlq1.png, class=inline-right)]]Het ''SQL Query'' scherm maakt het mogelijk om willekeurige queries op de database uit te voeren. De queries kunnen ook worden opgeslagen voor hergebruik, of beschikbaar gesteld worden aan gebruikers (bijvoorbeeld voor een zelf-gemaakte rapportage of controlelijst). De queries worden opgeslagen in de database en worden door backups bewaard. De uitvoer van een query kan worden geexporteerd naar Excel zoals elke andere rapportage. Het is mogelijk om in een query bijzondere beheer-acties uit te voeren die onder andere omstandigheden niet mogelijk zijn; deze functionaliteit is voorbehouden aan de OpenAC beheerder. Het ''SQL Query'' scherm wordt opgeroepen met de knop in de beheers-box van het startscherm. == Lijstweergave == Het ''SQL Query'' scherm laat de lijstweergave maar weinig zien: een knop [[Image(wiki:WikiStart:callout-1.png)]] ''Nieuwe query invoeren'' om queries in te voeren en een lijst [[Image(wiki:WikiStart:callout-2.png)]] van reeds aangemaakte queries. Dubbelklik op een bestaande query om die query uit te voeren of te bewerken. De OpenAC beheerder kan ook queries verwijderen. [[Image(sqlq2.png)]] == Query Bewerken == In het scherm om queries te bewerken kan je een ''naam'' [[Image(wiki:WikiStart:callout-1.png)]] invoeren voor de query -- deze naam is zichtbaar voor gebruikers als ''publiek'' [[Image(wiki:WikiStart:callout-2.png)]] ook is aangevinkt. Queries waarvoor ''publiek'' aanstaat, zijn voor '''alle''' gebruikers te gebruiken vanuit het hoofdscherm onder de knop ''Query''[[Image(sqlq4.png, class=inline-right)]]. [[Image(sqlq3.png)]] De query zelf is in te vullen in het grote tekstvak [[Image(wiki:WikiStart:callout-3.png)]]. Hier moet een geldige query staan in het SQL dialect van de database server die door OpenAC gebruikt wordt (dit is met name van belang bij queries die data-bewerkingen uitvoeren in de query zelf). De query mag over meerdere regels verspreid worden. Er hoeft geen puntkomma (`;`) aan het eind te staan. In enkele gevallen (`DELETE` en `UPDATE` queries) is het mogelijk om meerdere SQL statements in te voeren, gescheiden door puntkommas, maar dit wordt zelden gebruikt. Het is mogelijk om ''query parameters'' te gebruiken; dit zijn waardes die OpenAC bij het uitvoeren van de query aan de gebruiker vraagt and dan in de SQL statement ingevuld worden. Query parameters worden aangegeven met een ''parameter naam'' tussen dubbele accolades (`{{` en `}}`). Dezelfde parameter naam mag meerdere malen gebruikt worden in de query, dan wordt die maar een keer gevraagd, en het is mogelijk om meerdere query parameters te gebruiken. Onder het tekstvak voor de query is een veld ''maximum aantal'' waarmee de uitvoer van de query wordt beperkt. OpenAC gebruikt dan de eerste zoveel records die uit de query komen om de rapportagesheet op te stellen. '''Let op''' dat hiermee niet de query zelf beperkt wordt; gebruik daarvoor in de query (afhankelijk van het dialect) `LIMIT` of `TOP`. Als je dat niet doet, wordt een query als `SELECT * FROM patient_data` erg langzaam, zelfs als je maar 10 records in de sheet opneemt. Een query kan vanuit dit bewerkingsscherm worden opgeslagen voor hergebruik, of ook direct worden uitgevoerd door op de knop ''uitvoeren'' te klikken. Hiermee kan een query ook worden getest voordat die wordt opgeslagen. == Query Voorbeeld == Deze hele eenvoudige query vertelt hoeveel patienten er in de database staan: {{{ SELECT COUNT(1) FROM patient_data }}} Deze query vertelt hoeveel patienten er zijn met de geboortedatum 7 februari 1976 (in de database staan datums in ''YYYY-MM-DD'' opgeschreven): {{{ SELECT COUNT(1) FROM patient_data WHERE patient_geboortedatum = '1976-02-07' }}} Het is natuurlijk onhandig om deze query om de haverklap aan te passen om de datum te veranderen (bijvoorbeeld om patienten te vinden van 29 december 1971), dus we kunnen de query aanpassen zodat OpenAC er om vraagt voordat de query wordt uitgevoerd: {{{ SELECT COUNT(1) FROM patient_data WHERE patient_geboortedatum = '{{geboortedatum}}' }}} Merk op dat de parameter naam '''binnen''' de SQL-aanhalingstekens staat: anders zou je als onderdeel van de geboortedatum die ook moeten invoeren. OpenAC vervangt alleen de parameter naam met datgene door de gebruiker wordt ingevoerd. == Publieke Queries == [[Image(sqlq4.png, class=inline-right)]]Queries die ''publiek'' zijn worden aan '''alle''' gebruikers beschikbaar gesteld. Deze queries zijn te vinden onder de knop ''Query'' in het hoofdscherm. Als op deze knop gedrukt wordt, kan de gebruiker een keus maken uit alle beschikbare queries: [[Image(sqlq5.ong)]] Als de query is uitgekozen en de gebruiker op OK klikt, dan worden de parameters van de query (als die er zijn) gevraagd. In dit voorbeeld is het een query met twee parameters, ''geboortedatum'' en ''achternaam''. Als die zijn ingevuld wordt de query uitgevoerd en de resultaten getoond. [[Image(sqlq6.png)]]