Jeg har en db, hvor jeg har en del forskellige ja/nej-muligheder. I den forbindelse skal jeg så lave en forespørgsel, der går ind og - på baggrund af indtastninger i en formular - laver en rapport. Det med rapporten er ikke det store problem. Mit problem består mere i, hvordan jeg kan gøre sådan, at forespørgsel ikke har noget kriterium, hvis man vil have alle poster - uanset om de erja eller nej. Altså - hvis det kun er én række, der f.eks. er ja, styrer alle de andre, uanset om de er ja eller nej - hvordan gør jeg så det??
Og by the way - hvordan er det helt præcist, man henviser til en formularindtastning?? - det er noget med firkantede paranteser. Damn det her ligger langt tilbage - der har været lidt for meget sql ind over kan jeg mærke på det hele :)
I håb om snarlig hjælp.
Mvh. Blomst flere point er helt sikkert muligt, hvis det ønskes.
Når du indtaster ovennævnte kriterie, forlanger din forespørgsel en værdi i formularens felt. Hvis du vil ghave alle poster, vil jeg råde dig til at lave en ny forespørgsel med tilhørende rapport uden kriterier. Husk, at forespørgsler og rapporter fylder meget lidt i din db, idet de jo ikke indeholder data før de bliver åbnet.
Mange tak - men min mening er at kombinere 23 forskellige ja/nej-muligheder, så det bliver hurtigt til mange forskellige forespørgsler, hvis der skal være én til hvis kombination af disse ja/nej-muligheder. Men leger lidt videre med det - tror måske, jeg har en ide, hvor jeg bruger nogle jokertegn, eller et eller andet.
Altså - for at tage et lidt mere lay low-eksempel har jeg følgende: SELECT [tryout].[id], [tryout].[tekst] FROM tryout WHERE [tryout].[id]=[forms]![frm_tryout]![id] And [tryout].[tekst] Like "*=[forms]![frm_tryout]![tekst]*";
Det er min sql-sætning i min query. Har naturligvis en tabel bag med nogle eks-data. Min formular hedder self frm_tryout og de to felter, jeg bruger hedder hhv. id og tekst. Jeg har i formen en knap der åbner queryen med denne sætning - men den finder ingenting overhovedet, når jeg trykker på knappen. Er der én, der har en anelse om, hvorfor???
Jo - men det skal være sådan, at nogle kan være "tomme" så den ikke tager sig af, om det er ja eller nej i tabellen, da det er en anden ja/nej-mulighed, der er den vigtige
Synes godt om
Slettet bruger
14. februar 2006 - 08:59#8
Jeg har ikke selv brugt det men kan man ikke sætte ja/nej felterne til at have 3 tilstande og så sætte dem alle ind i forespørgslen. Det kræver nok at dit datamateriale også har 3 værdier... Det er bare lidt strøtanker fordi jeg kan ikke helt overskue dit problem, jeg har nok brug for et lidt mere specifikt eksempel før jeg kan hjælpe!~)
Er der en forespørgsel til hver ja/nej kombination, så kunne du vel lave det i sql. Måske med nogle if sætninger...
Tomme Ja/Nej felter? Jeg mener ikke det er muligt, idet et Ja/Nej felt jo i sagens natur kun kan have 2 tilstande: Ja eller Nej, True eller False, 0 eller -1.
Hvis dine Ja/Nej felter er oprettet som Afkrydsningsfelter i din formular, kan du på egenskaberne/fanen Data i nederste række markere, om afkrydsningsfelterne skal have 3 tilstande. Er det den, du efterlyser?
Private Sub cb1_DblClick(Cancel As Integer) 'DobbelKlik [cb1].Value = Null 'værdi sættes til Null End Sub
Private Sub cb2_DblClick(Cancel As Integer) [cb2].Value = Null End Sub
Private Sub cb3_DblClick(Cancel As Integer) [cb3].Value = Null End Sub
Private Sub Form_Open(Cancel As Integer) Rem Sæt alle checkbox = null [cb1].Value = Null [cb2].Value = Null [cb3].Value = Null End Sub
Private Sub Go_Click() Dim db As Database, fs As QueryDef, sqS As String, wP, sq1 As String, sq2 As String, sq3 As String Set db = CurrentDb Set fs = db.QueryDefs(fsp) sqS = fs.sql
fs.sql = sq1 + "WHERE " + sq3 DoCmd.OpenQuery fsp End If End Sub
Private Function modificerSQL(str As String) Dim del, ff As Control, rSQL, svar As String, fNavn As String, antalCB As Integer, count As Integer rSQL = "" antalCB = 0
For Each ff In Controls If InStr(LCase(ff.Name), "cb") > 0 Then antalCB = antalCB + 1 End If Next ff
count = 0 For Each ff In Controls If InStr(LCase(ff.Name), "cb") > 0 Then fNavn = "((Tabel1." + ff.Name + ")"
If ff.Value = True Then svar = fNavn + "=Yes)" Else If ff.Value = "False" Then svar = fNavn + "=No)" Else svar = fNavn + "is not null)" End If End If count = count + 1
If count < antalCB Then rSQL = rSQL + svar + " AND " Else rSQL = rSQL + svar End If End If Next modificerSQL = "((" + rSQL + "))" End Function
Mvh
Ønskes DB tilsendt – kontakt pb@supertekst-it.dk
Synes godt om
Ny brugerNybegynder
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.