[access] string meegeven aan Query

Pagina: 1
Acties:

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
hoi, ik zit met het volgende probleem. Ik wil graag een string opvragen vanuit een query. Ik weet dat ik via [Forms]![frmOverviewTests].[textvak1].[VALUE] een textvak op kan vragen uit een query, maar ik wil nu een string opvragen en geen form object zegmaar.

Hoe doe ik dit? ik heb het al op verschillende manieren geprobeerd maar ik kom er niet uit. Wat moet ik in de SQL Query zetten om een gewone string uit een form te lezen?

mijn probeersels tot nu toe:
[Forms]![frmOverviewTests].[deString].[VALUE]
[Forms]![frmOverviewTests].deString

het werkt allebij niet... iemand een idee toevallig?

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Een stringvariabele meegeven in een query kan niet.

Wat wil je er precies mee bereiken? Dan kunnen we een alternatief bedenken.
(post de query eens)

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
ik heb een form waar een paar comboboxes in staan. Dit is een form om resultaten te tonen. Met de comboboxes kun je aangeven wat er getoont moet worden, maar als je ze leeg laat staan moeten ze alles weergeven zegmaar.

Dus ik wil een select query maken waar soms meer 'where blabla = combobox1.value' in komen te staan, maar soms ook helemaal geen 1.. snapje?

ik zit nu te bedenken dat dat wel makkelijk gaat als ik een select query in de code kan laten uitvoeren en tonen in een venster..

dit heb ik nu zover voor elkaar met een querydef en een DoCmd.OpenQuery. Maar nu is dus nog een probleem dat elke keer dat ik op die knop druk die query gemaakt wordt,en als er dus een 2e keer gedrukt wordt krijg je een melding dat die naam al bestaat.. Dit is ook niet ideaal..

ik ben (nog) niet zo'n access held.. misschien dat iemand een idee heeft hoe ik dit beter aan kan pakken?
alvast heel erg bedankt!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

stringQuery = "SELECT * FROM BLA WHERE BLA = '" & cmbBox.Value & "'"

oogjes open, snaveltjes dicht


  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Je kan toch gewoon een filter instellen bij de Query... daar kun je dan gewoon de WHERE-clause in kwijt... check de help maar... het staat er zeker in! Suc6!

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
ja dat dacht ik zelf ook al.. maar ik moet een manier vinden dat ie vaker gebruikt kan worden zonder dat ik elke keer dat ding moet renamen zegmaar.

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
TeknoGecko schreef op 26 september 2002 @ 16:08:
Je kan toch gewoon een filter instellen bij de Query... daar kun je dan gewoon de WHERE-clause in kwijt... check de help maar... het staat er zeker in! Suc6!
hmm ja maar filters mag ik nou net niet gebruiken dacht ik omdat die de multi user omgeving verneuken.. zal nog eens navragen anders zou het r een heel stuk makkelijker op worden ;)

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
Dynamisch opbouwen van uw SQL statement, zoals Don Facundo reeds aangaf.

https://fgheysels.github.io/


  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
ja maar hoe voer ik zo'n ding dan regelmatig uit als er elke keer een andere sql statement moet komen? ik krijg het ff niet goed voor elkaar

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
hmm ja maar filters mag ik nou net niet gebruiken dacht ik omdat die de multi user omgeving verneuken.. zal nog eens navragen anders zou het r een heel stuk makkelijker op worden ;)
Ja, klopt, daar heb je gelijk in... dat slaat Abcess gewoon op... yupz... dan zit er inderdaad niets anders op als de query dynamisch op te bouwen...

Maar je zal hem natuurlijk wel weer nodig hebben voor iets anders, no?
Wordt lastig met opslaan als er meer gebruikers zijn...

Ik heb dit probleem ook gehad... ik zal eens ff opzoeken wat ik er toen mee gedaan heb...

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Als je nou een check uitvoerd op de combobox voor het uitvoeren van de query, die kijkt of die gevuld is...

Ja = Query1 met ref naar Combobox
Nee = Query2 zonder WHERE-clause

Dan heb je wel 2 queries, maar dat maakt opzich niet uit, no? :)

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
TeknoGecko schreef op 26 september 2002 @ 16:29:
Als je nou een check uitvoerd op de combobox voor het uitvoeren van de query, die kijkt of die gevuld is...

Ja = Query1 met ref naar Combobox
Nee = Query2 zonder WHERE-clause

Dan heb je wel 2 queries, maar dat maakt opzich niet uit, no? :)
Ja dat dacht ik dus ook al aan, maar het zijn vier comboboxen die allemaal apart aan of uitgezet kunnen worden, dus dan moet ik toch nog een hoop queries aanmaken.. :(

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

stringQuery = "SELECT * FROM nOObs"
if (true)
stringQuery = stringQuery & " WHERE Manual = '" & combox.value & "'"
else
stringQuery = stringQuery & " WHERE Google= '" & comboxvalue & "'"

oogjes open, snaveltjes dicht


  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
Don Facundo schreef op 26 september 2002 @ 16:33:
stringQuery = "SELECT * FROM nOObs"
if (true)
stringQuery = stringQuery & " WHERE Manual = '" & combox.value & "'"
else
stringQuery = stringQuery & " WHERE Google= '" & comboxvalue & "'"
ja en hoe kan ik die stringquery dan weer leeg maken naderhand als het venster gesloten word zodat ik er nog een keer op kan klikken met andere waardes voor die comboboxen zegmaar?

want dat lukte me niet helemaal.. dan krijg je de melding dat de query al bestaat .. :(

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Dat krijg je niet opgelost vrees ik... of je moet de username verwerken in de naam van de query, maar dan krijg je imho ook een flinke bende...

Waar gebruik je de resultaten eigenlijk voor?

Als je er een grid aan gekoppeld hebt ofzo, dan zou ik toch overstappen op recordsets... dynamisch SQL opbouwen en dan de data overhevelen naar de grid... dan hoef je niet te koppelen, dus dan ben je veel flexibeler... :)

[off-topic]
Dit is dus imho typisch een voorbeeld van iets waar je vroeg of laat altijd tegenaan loopt als je met gekoppelde objecten werkt... in VB heb je ook bergen sleur&pleur wizards met exotische koppelingen (Data Environment bijv. :r )... leer jezelf gewoon aan met recordsets (ADO) te werken... dan gaat er een wereld voor je open! :7
[/off-topic]

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
TeknoGecko schreef op 26 september 2002 @ 17:09:
Dat krijg je niet opgelost vrees ik... of je moet de username verwerken in de naam van de query, maar dan krijg je imho ook een flinke bende...

Waar gebruik je de resultaten eigenlijk voor?

Als je er een grid aan gekoppeld hebt ofzo, dan zou ik toch overstappen op recordsets... dynamisch SQL opbouwen en dan de data overhevelen naar de grid... dan hoef je niet te koppelen, dus dan ben je veel flexibeler... :)
hmm recordsets en een grid... ik ga het eens even uitzoeken, nu heb ik vanmiddag wat de doen op m'n stage in ieder geval :Y)

ik post het wel als ik er niet uitkom! alvast heel erg bedankt voor alle hulp! _/-\o_

  • Heras
  • Registratie: December 2001
  • Laatst online: 20-04 13:23
en, misschien niet de mooiste oplossing, maar voor de melding dat die query al bestaat kun je natuurlijk de warnings tijdelijk uitzetten in je code:

docmd.setwarnings false
docmd.openquery (en eventueel overige code)
docmd.setwarnings true

edit: typo

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
Heras schreef op 27 september 2002 @ 09:01:
en, misschien niet de mooiste oplossing, maar voor de melding dat die query al bestaat kun je natuurlijk de warnings tijdelijk regel uitzetten in je code:

docmd.setwarnings false
docmd.openquery (en eventueel overige code)
docmd.setwarnings true
oe da's wel een vieze 8)
maar t moet ook netter kunnen lijkt mij. Ik zal toch niet de eerste zijn die zoiets probeerd?

  • SquatRS
  • Registratie: Mei 2002
  • Laatst online: 30-08 10:16
Rodyman schreef op 27 september 2002 @ 08:52:
[...]


hmm recordsets en een grid... ik ga het eens even uitzoeken, nu heb ik vanmiddag wat de doen op m'n stage in ieder geval :Y)

[...]
Anders ik wel... ;) (8> }:O

[ Voor 0% gewijzigd door SquatRS op 27-09-2002 09:08 . Reden: typfoutje... ]


  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
TeknoGecko schreef op 26 september 2002 @ 17:09:

Als je er een grid aan gekoppeld hebt ofzo, dan zou ik toch overstappen op recordsets... dynamisch SQL opbouwen en dan de data overhevelen naar de grid... dan hoef je niet te koppelen, dus dan ben je veel flexibeler... :)
Met die grid bedoel je dan een activex grid-control? of iets anders? want ik deze versie van access die ik hier gebruik 97 hebben we geen licentie om die control te gebruiken :S ..

heb je msischien een voorbeeldje want ik kom er zo ff nog niet helemaal uit :(

/edit
Ik heb nu wel een recordset gemaakt enzo, en daar kan ik lekker m'n sql query bij laten generen zegmaar. Maar hoe zet ik dat ding nou op het scherm want als ik openRecordset doe met een select query dan gebeurd er niet echt veel :S

  • SquatRS
  • Registratie: Mei 2002
  • Laatst online: 30-08 10:16
ja bij zoiets ben ik ook vastgelopen...is er iemand die ons hiermee kan helpen???

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Ja, bijv. de Microsoft DataGrid Control...
Licentie? Zoiets zit toch standaard in Access? :?

Maargoed... gebruik bijv. Google Groups, MSDN ed. om voorbeelden te zoeken...
Ik heb nog geen probleem gehad waar ik met behulp van deze 2 bronnen niet uit kwam.

Voorbeeld: Google Groups: access+grid+recordset

Gewoon een beetje expirimenteren, daar leer je meest van. Suc6! ;)

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
hmm heb nu een andere oplossing van iemand gehoord, zodra er op de showknop geragt wordt, eerst controleren of die query al bestaat, zo ja, dan gewoon deleten dat ding en een nieuwe aanmaken! ..

damn eigenlijk wel slim en toch niet moeilijk.. nu eens kijken of ik het werkend kan krijgen ;)

  • SquatRS
  • Registratie: Mei 2002
  • Laatst online: 30-08 10:16
hee das eigenlijk wel een makkelijke en 'schone' oplossing gaan we ook maar ff proberen...bedank die gozer van mij Rodyman.. :p

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

Volgens mij gaat er ooit nog wel eens een wereld voor jullie open ;)
code:
1
2
3
4
5
6
7
8
9
10
11
12
Sub button_Click
  Dim sQuery As String
  Dim dbs As DataBase
  Dim rst As Recordset
  stringQuery = "SELECT * FROM nOObs"
  if (true)
    stringQuery = stringQuery & " WHERE Manual = '" & combox.value & "'"
  else
    stringQuery = stringQuery & " WHERE Google= '" & comboxvalue & "'"
  Set dbs = CurrentDB
  Set rst = dbs.OpenRecordset(stringQuery)
End

oogjes open, snaveltjes dicht


  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
hmm heb nu een andere oplossing van iemand gehoord, zodra er op de showknop geragt wordt, eerst controleren of die query al bestaat, zo ja, dan gewoon deleten dat ding en een nieuwe aanmaken! ..

damn eigenlijk wel slim en toch niet moeilijk.. nu eens kijken of ik het werkend kan krijgen
Dan blijf je problemen hebben met je multiuseromgeving hoor... tis niet ondenkbaar dat er 2 man tegelijk met je db bezig is... als de een hem in gebruik heeft en de ander probeerd hem te deleten... ERROR!

Vergelijk het met een Worddocument... die kun je ook niet met meerderen gaan zitten wijzigen... data in tabellen wel, maar daar wordt ook een locking mechanisme toegepast om te voorkomen dat meerdere processen tegelijk dezelfde data zitten te wijzigen, waar inconsistenties door ontstaan.
Een recordset en een formulier/grid (niet de source, maar de instantie) zitten alleen op de client in het geheugen, waardoor je die problemen dus niet hebt.

[ Voor 0% gewijzigd door baskabas op 27-09-2002 16:24 . Reden: quote toegevoegd ]


  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
Don Facundo schreef op 27 september 2002 @ 16:21:
Volgens mij gaat er ooit nog wel eens een wereld voor jullie open ;)
code:
1
2
3
4
5
6
7
8
9
10
11
12
Sub button_Click
  Dim sQuery As String
  Dim dbs As DataBase
  Dim rst As Recordset
  stringQuery = "SELECT * FROM nOObs"
  if (true)
    stringQuery = stringQuery & " WHERE Manual = '" & combox.value & "'"
  else
    stringQuery = stringQuery & " WHERE Google= '" & comboxvalue & "'"
  Set dbs = CurrentDB
  Set rst = dbs.OpenRecordset(stringQuery)
End
ja dat begrijp ik ook wel, maar stel je eens voor dat combox.value ook een nullwaarde kan zijn. Dan geeft ie geeneen item weer, maar dan moet ie juist ALLE items weergeven.

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
TeknoGecko schreef op 27 september 2002 @ 16:23:
[...]


Dan blijf je problemen hebben met je multiuseromgeving hoor... tis niet ondenkbaar dat er 2 man tegelijk met je db bezig is... als de een hem in gebruik heeft en de ander probeerd hem te deleten... ERROR!

Vergelijk het met een Worddocument... die kun je ook niet met meerderen gaan zitten wijzigen... data in tabellen wel, maar daar wordt ook een locking mechanisme toegepast om te voorkomen dat meerdere processen tegelijk dezelfde data zitten te wijzigen, waar inconsistenties door ontstaan.
Een recordset en een formulier/grid (niet de source, maar de instantie) zitten alleen op de client in het geheugen, waardoor je die problemen dus niet hebt.
klopt ja.. maar volgens mij heb je dit niet als je de database splitst met de database splitter van access, en dat je dan de tabbellen op een server gooit, en de front-end zegmaar met queries en al op de client laat draaien.

Of zit ik nu verkeerd te denken?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

als je om dat if statement nou checkt of die value null is ... dan plakt je er dus niks aanvast...

oogjes open, snaveltjes dicht


  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Rodyman schreef op 27 september 2002 @ 16:26:
[...]


klopt ja.. maar volgens mij heb je dit niet als je de database splitst met de database splitter van access, en dat je dan de tabbellen op een server gooit, en de front-end zegmaar met queries en al op de client laat draaien.

Of zit ik nu verkeerd te denken?
Je hebt gelijk als op iedere PC een losse MDB staat...
...niet als de MDB op een share op het netwerk staat.

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
Don Facundo schreef op 27 september 2002 @ 16:27:
als je om dat if statement nou checkt of die value null is ... dan plakt je er dus niks aanvast...
ja zo doe ik het nou dus ook, maar dan niet met een recordset want die vind ik niet echt handig weergeven in een datasheet vorm. of heb je daar een makkelijke manier voor?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

Je zet toch de datasource van een datasheet?

datasheet.datasource = rst ofzo?

oogjes open, snaveltjes dicht


  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
hmm ok zal morgen eens kijken of t werkt.. nu is het weekend en dan ga ik daar niet aan beginnen he ;)
Pagina: 1