Avatar billede d0stuffz Nybegynder
05. oktober 2004 - 10:14 Der er 8 kommentarer og
1 løsning

Access 2000 Parameter overførsel

Jeg prøver at arbejde med Access og VB script. Min case er:

Jeg har en form, når den loader kommer den korrekt nok frem med resultsettet af en -
select * from chassis order by date desc;

Nu vil jeg gerne finde en specifik record, så jeg har lavet et input felt til det - navn: chassisNo.
Nu forsøger jeg at overføre det felt til min SQL query. Jeg prøver både med:
1) DoCmd.OpenQuery "searchChassis", acViewNormal, acReadOnly
2) DoCmd.RunSQL "SELECT * FROM ChassisReport WHERE chassisID = [ChassisListing]![chassisNo]"
3) DoCmd.RunSQL "SELECT * FROM ChassisReport WHERE chassisID = chassisNo"

med 1) kommer den frem med endnu et popup vindue: "skriv chassisNo" og derefter kommer den med et nyt vindue med resultsettet
med 2) og 3) siger den "du har glemt din SQL sætning", hvis jeg underlader "" siger den "Jeg forstår ikke ordet SELECT, samt * FROM WHERE"

Jeg ville gerne den hentede parametrene fra felterne som allerede er udfyldt og den viser resultatet i det rigtige vindue og ikke et nyt. Hvordan overfører jeg parametrene på et 2000 interface (Forms, Query, VB script).
05. oktober 2004 - 10:24 #1
Når du skriver VB script, mener du så VBA eller mener du, at du arbejder med en .vbs-fil eller?

Hvis det er ren Access og VBA, kan du - fra en forespørgsel - referere til et felt på en formular således:
SELECT * FROM ChassisReport WHERE chassisID = Forms![ChassisListing]![chassisNo]

Hvor ChassisListing er navnet på formularen og chassisNo er din tekstboks, som brugeren taster i.
Avatar billede d0stuffz Nybegynder
05. oktober 2004 - 10:37 #2
Hmm næsten korrekt

"RunSQL requires an argument consisting of an SQL statement"

aka

"du har glemt din SQL"
05. oktober 2004 - 10:43 #3
Du skal selvfølgelig skrive:
Docmd.RunSQL "SELECT * FROM ChassisReport WHERE chassisID = Forms![ChassisListing]![chassisNo]"


Hvis koden afspilles fra samme formular, kan du skrive således:

Docmd.RunSQL "SELECT * FROM ChassisReport WHERE chassisID = " & Me!chassisNo
Avatar billede d0stuffz Nybegynder
05. oktober 2004 - 10:54 #4
Dette er den komplettet funktion:

Private Sub searchChassis_Click()
On Error GoTo Err_searchChassis_Click

    ' SELECT * FROM ChassisReport WHERE chassisID = ChassisNo OR date = searchDate
    'DoCmd.OpenQuery "SearchChassisReport", acViewNormal, acReadOnly
    DoCmd.RunSQL "SELECT * FROM ChassisReport WHERE chassisID = " & Me!ChassisNo


Exit_searchChassis_Click:
    Exit Sub

Err_searchChassis_Click:
    MsgBox Err.Description
    Resume Exit_searchChassis_Click
   
End Sub

Svaret er stadig: "Du har glemt din SQL, HAHA"
Avatar billede d0stuffz Nybegynder
05. oktober 2004 - 10:58 #5
Prøver med:
    DoCmd.RunSQL "SELECT * FROM ChassisReport WHERE chassisID = Forms![ChassisView]![chassisNo];"

';' forskel.
05. oktober 2004 - 11:05 #6
; gør ingen forskel (spørg ikke, hvorfor den så er der ;)

Men problemet er selvfølgelig, at Docmd.RunSQL kun kan bruges til handlingsforespørgsler (og ikke en udvælgelsesforespørgsel som din)

gem denne SQL i din searchChassis-query og åbn den med Docmd.OpenQuery:

SELECT * FROM ChassisReport WHERE chassisID = Forms![ChassisView]![chassisNo]
Avatar billede d0stuffz Nybegynder
05. oktober 2004 - 11:11 #7
ahh bingo ...

nu skal jeg bare have vist den nye popup i det rigtige vindue...
05. oktober 2004 - 11:13 #8
:o)

Normal vil man jo binde forespørgslen til en formular og så vise denne i stedet.

Så vil den optimale løsning være at din searchChassis-query kun ser således ud:
"SELECT * FROM ChassisReport"

herefter bruger du denne kommando til at åbne formularen:

Docmd.Openform "din nye formular",,,"chassisID = " & Me!chassisNo
Avatar billede d0stuffz Nybegynder
05. oktober 2004 - 11:19 #9
ahh ja .. det var mit næste punkt :D

For jeg skal have vist detaljerne for et chassis.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester