Controle invoer query

Status
Niet open voor verdere reacties.

Techneut

Gebruiker
Lid geworden
23 mrt 2007
Berichten
20
Hoi,

Ik ben bezig met het ontwerpen van een wachtwoorden Access database voor servers en software. Deze is nu voor 90% gereed. Werking is simpel:

Door middel van een query wordt gevraagd om de desbetreffende server cq titel software in te voeren waarna deze de bijbehorende password cq serialkey laat zien.

Daarna worden zowel de inloggegevens van de gebruikers / computernaam / tijd ect weggeschreven in een tabel voor latere controle.

In mijn query qry_Opgevraagde_Gegevens heb ik onder het kopje criteria de opdracht [Give servername:] geplaatst. Hierdoor krijg je dus een textbox waarin men het gevraagde kan invoeren.

Vraag: Hoe controleer ik deze invoer? Indien men nu gewoon op Ok klikt (invoer is dus leeg), loopt mijn database vast op het punt dat hij een waarde weg wil schrijven naar
mijn Log_Table:mad:.

Graag zou ik zien dat er een foutmelding komt en eventueel de database afsluit :D .

Wie helpt mij verder om deze invoercontroleslag te realiseren?:thumb:
 
Laatst bewerkt:
Hallo,

ik neem aan dat je een formulier gebruikt om de servernaam in te voeren.
Zo nee, maak een formulier.
Kontrole doe je via VBA code, iets in de geest van

If IsNull(Me.txtServerName) Then
' code om nogmaals in te voeren of om af te sluiten
Else
' code om je bijwerkquery te draaien en verder te gaan
End If

VBA zul je zelf moeten schrijven.

Groet,

Tardis
 
in je query kan je de volgende test opnemen

Code:
SELECT IIf(nz([Servername:],1)=1,"Yes","No") AS OpgegevenServername
FROM tbl

Dus als de servername leeg is (null) dan krijgt hij de default waarde 1.
Als deze 1 is dan is de returnvalue Yes en ander No.

Je kan ook een tabel met geldige servernamen joinen en dan een selectie maken.
 
in je query kan je de volgende test opnemen

Code:
SELECT IIf(nz([Servername:],1)=1,"Yes","No") AS OpgegevenServername
FROM tbl

Dus als de servername leeg is (null) dan krijgt hij de default waarde 1.
Als deze 1 is dan is de returnvalue Yes en ander No.

Je kan ook een tabel met geldige servernamen joinen en dan een selectie maken.

Bedankt voor de input :thumb: , maar ik ben niet zo thuis in het SQL gebeuren.

Mijn SQL-view zit als volgt eruit:

SELECT [Verzameling Password_SerialKey].Server_Software, [Verzameling Password_SerialKey].Password_SerialKey
FROM [Verzameling Password_SerialKey]
WHERE ((([Verzameling Password_SerialKey].Server_Software)=[Servername:]))


Hoe wordt de testroutine dan ?? :(
 
Hallo Techneut,

met het aanpassen van je query gaat wat je wilt niet lukken.
Gebruik een formulier om de servernaam/ software titel in te voeren.
Vervolgens VBA gebruiken om je controle af te vangen.

Groet,

Tardis
 
Hallo Techneut,

met het aanpassen van je query gaat wat je wilt niet lukken.
Gebruik een formulier om de servernaam/ software titel in te voeren.
Vervolgens VBA gebruiken om je controle af te vangen.

Groet,

Tardis


Ik weet wat je bedoelt Tardis, maar daar wrikt nu net de schoen.

Indien ik een selectie combobox aanmaak en hierachter VB zet lukt het allemaal wel. Men selecteert bv een servernaam. Een Event AfterUpdate wordt gestart en het gevraagde Password + servernaam worden getoond. :thumb:

Nu had ik op deze form een Query zitten die de waarden wegschrijft in twee comboboxjes. Daarna wordt dmv VB de opgevraagde waarden [Servername_Software] en [Password_SerialKey] weggschreven in een LOG_Table, zodat ik later kan zien wie de gevraagde gegevens heeft opgevraagd.

Zodra ik de Form activeer werkt mijn selectie combobox (kan dus selecteren van welke server ik zijn password wil zien). Daarna worden de volgende 2 comboboxjes gevuld, waardoor het opgevraagde zichtbaar wordt. In de ene staat de opgevraagde servernaam en de andere het bijbehorende password. Geen probleem toch verder lijkt het...:rolleyes:

Kijk ik nu ik mijn LOG_Table, zie ik dat zowel mijn selectie combobox waarde, als de twee comboboxjes waarden in de LOG_Table zijn gezet. Maw, 2x de servernaam en 1x het bijbehorende password. Terwijl toch alleen maar de laatste twee textboxjes in mijn VB script staan vermeldt:(

Doe ik dit nu op de manier zoals ik het nu heb.. werkt de form goed maar ook mijn logfiles zijn een stuk betrouwbaarder en heb nu geen last meer van dubbele namen.;)

Maar aangezien ik nu niet de servernaam selecteer dmv een combobox, maar rechtstreeks invoer in een query, zou ik het fijn vinden om juist deze invoer te kunnen controleren.

Vandaar mijn vraag of dit mogelijk zou zijn.

Groet, Techneut
 
Maar aangezien ik nu niet de servernaam selecteer dmv een combobox, maar rechtstreeks invoer in een query, zou ik het fijn vinden om juist deze invoer te kunnen controleren

Zonder VBA niet nee.
Je probeert nu met een stoplap je eigenlijke probleem

Kijk ik nu ik mijn LOG_Table, zie ik dat zowel mijn selectie combobox waarde, als de twee comboboxjes waarden in de LOG_Table zijn gezet. Maw, 2x de servernaam en 1x het bijbehorende password

te omzeilen.
Dus.... ;)

Groet,

Tardis
 
Bedankt voor de input :thumb: , maar ik ben niet zo thuis in het SQL gebeuren.

Mijn SQL-view zit als volgt eruit:

SELECT [Verzameling Password_SerialKey].Server_Software, [Verzameling Password_SerialKey].Password_SerialKey
FROM [Verzameling Password_SerialKey]
WHERE ((([Verzameling Password_SerialKey].Server_Software)=[Servername:]))


Hoe wordt de testroutine dan ?? :(

Die wordt zelfs nog simpeler:
Code:
WHERE ((([Verzameling Password_SerialKey].Server_Software)=NZ([Servername:],"nietbestaandeservernaam"))

De query geeft nu geen resultaat terug als je óf niets opgeeft óf als je een servernaam opgeeft die niet bestaat.

So simpel.
 
Die wordt zelfs nog simpeler:
Code:
WHERE ((([Verzameling Password_SerialKey].Server_Software)=NZ([Servername:],"nietbestaandeservernaam"))

De query geeft nu geen resultaat terug als je óf niets opgeeft óf als je een servernaam opgeeft die niet bestaat.

So simpel.

Hij is simpel en eigenlijk logisch ook :cool:

Maareh.. ik krijg de foutmelding:

Invalid SQL statement; expected 'DELETE','INSERT','PROCEDURE','SELECT' or 'UPDATE':confused:

En nu????:(
 
Hallo,

deze foutmelding krijg je als je in VBA een RunSQL command uitvoert op een niet-aktie query.
Wat je dan wel moet doen kan ik zonder meer info niet vertellen.

Groet,

Tardis
 
Aan de foutmelding te zien denk ik dat je hebt geprobeerd de WHERE clause te runnen als een SQL Statement.
Ik had misschien iets duidelijker moeten zijn.
Je moet het WHERE gedeelte van de query vervangen door mijn voorstel. Het resultaat wordt dan
Code:
SELECT [Verzameling Password_SerialKey].Server_Software, [Verzameling Password_SerialKey].Password_SerialKey
FROM [Verzameling Password_SerialKey]
WHERE ((([Verzameling Password_SerialKey].Server_Software)=NZ([Servername:],"nietbestaandeservernaam"))
Ik hoop dat het hiermee wel lukt.

Action queries kan je runnen als volgt:
Code:
CurrentDB.execute "DELETE * FROM table1"
 
Aan de foutmelding te zien denk ik dat je hebt geprobeerd de WHERE clause te runnen als een SQL Statement.
Ik had misschien iets duidelijker moeten zijn.
Je moet het WHERE gedeelte van de query vervangen door mijn voorstel. Het resultaat wordt dan
Code:
SELECT [Verzameling Password_SerialKey].Server_Software, [Verzameling Password_SerialKey].Password_SerialKey
FROM [Verzameling Password_SerialKey]
WHERE ((([Verzameling Password_SerialKey].Server_Software)=NZ([Servername:],"nietbestaandeservernaam"))
Ik hoop dat het hiermee wel lukt.

Action queries kan je runnen als volgt:
Code:
CurrentDB.execute "DELETE * FROM table1"



Thank You Very Much!!!! :thumb: :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan