10. august 2005 - 12:28Der er
85 kommentarer og 1 løsning
Brug af SELECT forespørgsel i vba
SELECT TOP 1 Left([PalleNr],1) AS pnrs FROM Registrering WHERE (((Registrering.VaelgLinie)=[forms]![oppetid]![subformoppetid]![vaelglinie]) AND ((Registrering.VaelgHold)=[forms]![oppetid]![subformoppetid]![vaelghold]) AND ((Registrering.GrafDato)=[forms]![oppetid]![subformoppetid]![grafdato]));
Jeg skal bruge pnrs i vba'en til: Me.PalleNr = pnrs & "SA"
Dim Db as database, Rs as Recordset, StrSQL as string Db=CurrentDB
strSql=" X SELECT TOP 1 Left([PalleNr],1) AS pnrs FROM Registrering WHERE (((Registrering.VaelgLinie)=[forms]![oppetid]![subformoppetid]![vaelglinie]) AND ((Registrering.VaelgHold)=[forms]![oppetid]![subformoppetid]![vaelghold]) AND ((Registrering.GrafDato)=[forms]![oppetid]![subformoppetid]![grafdato]));"
Set rs = db.OpenRecordset(strSQL)
me.pallenr=rs.fields("pnrs") & "SA"
Synes godt om
Slettet bruger
10. august 2005 - 13:16#2
Det er vist mere end en kommentar, nåh men jeg prøver lige. Så må jeg også se om jeg kan finde ud af at "knække" linien i vba'en, altså med & _
StrSql="SELECT TOP 1 Left([PalleNr],1) AS pnrs FROM Registrering" strsql=strsql & " WHERE (((Registrering.VaelgLinie)=[forms]![oppetid]![subformoppetid]![vaelglinie])" strsql=strsql & " AND ((Registrering.VaelgHold)=[forms]![oppetid]![subformoppetid]![vaelghold])" strsql=strsql & " AND ((Registrering.GrafDato)=[forms]![oppetid]![subformoppetid]![grafdato]));"
Synes godt om
Slettet bruger
10. august 2005 - 13:31#8
og der er invalid use of property ved Db = CurrentDb
Jeg kan ikke huske hvad den som standard er... Forventer 3 parametre ???
For QueryDef, Recordset, and TableDef objects:
Set recordset = object.OpenRecordset (type, options, lockedits)
The OpenRecordset method syntax has these parts.
Part Description recordset An object variable that represents the Recordset object you want to open. object An object variable that represents an existing object from which you want to create the new Recordset. source A String specifying the source of the records for the new Recordset. The source can be a table name, a query name, or an SQL statement that returns records. For table-type Recordset objects in Microsoft Jet databases, the source can only be a table name. type Optional. A constant that indicates the type of Recordset to open, as specified in Settings. options Optional. A combination of constants that specify characteristics of the new Recordset, as listed in Settings. lockedits Optional. A constant that determines the locking for the Recordset, as specified in Settings.
Mit gæt er, at de 3 parametre er de tre referencer til felter på en formular. Umiddelbart en lidt kryptisk fejlmeddelelse, men et eller andet sted er den nok ok.
Nu siger den at der er en syntaksfejl, fordi der mangler en operator i forespørgselsudtrykket "(((registrering.vaelglinie)=Linie 70) AND ((Registrering.vaelghold)=Dagshold) AND ((Registrering.Grafdato)=10-08-2005))"
én af dem må være forkert - det tyder fejlmeddelelsen på.
Synes godt om
Slettet bruger
10. august 2005 - 14:51#56
hvis jeg prøver 14:40:06 så begynder den på det med de forventede 3 parametre. Hvis jeg dbl klikker på forespørgslen, så kommer den med det rigtige svar (nemlig 4)..
Synes godt om
Slettet bruger
10. august 2005 - 14:54#57
vaelghold og vaelglinie er text grafdato er date/time (short date)
Der er for få parametre. Der var ventet 3. og så stopper debug ved Set Rs = Db.OpenRecordset("PalleNrSampak") også selvom jeg bruger dbopensnapshot eller dbopendynaset...
Synes godt om
Slettet bruger
10. august 2005 - 15:03#62
Too few parameters. Expected <number>. (Error 3061) This parameter query requires the specified number of parameters, which you did not supply. Provide the expected number of parameters, and run the query again.
In some cases, this message is generated when unknown field names or expressions are interpreted as query parameters. Be sure to enclose field names containing spaces or punctuation with square brackets [ ].
spg > Hvis du foretrækker at fortsætte med madschristensens forslag, så sig lige til. Så er der jo ikke nogen grund til at jeg fortsætter med den anden løsning ;0)
Hvis det er muligt for dig at sende databasen, kan jeg godt kigge nærmere på den. Du kan evt. "strippe" den, så den kun indeholder det der kræves for at undersøge problemet. Jeg kan dog kun læse Access 97 og 2000 ;(
Synes godt om
Slettet bruger
10. august 2005 - 15:16#70
Dim Db As database, Rs As Recordset, strsql As String
Set Rs = Db.OpenRecordset(strsql, dbOpenSnapshot) Me.PalleNr = Rs.Fields("pnrs") & "SA" Set Rs = Nothing Set Db = Nothing
Giver type mismatch..
og forresten skal jeg lige have en desc med:~)
SELECT TOP 1 Left([PalleNr],1) AS pnrs FROM Registrering WHERE (((Registrering.VaelgLinie)=[forms]![oppetid]![subformoppetid]![vaelglinie]) AND ((Registrering.VaelgHold)=[forms]![oppetid]![subformoppetid]![vaelghold]) AND ((Registrering.GrafDato)=[forms]![oppetid]![subformoppetid]![grafdato])) ORDER BY Left([PalleNr],1) DESC;
Kan jeg få dig til at stoppe programmet (med et breakpoint umiddelbart efter den har lavet strSQL - dvs. i linien med Set Rs = Db.OpenRecordset(strsql, dbOpenSnapshot)
Og så skal du gå over i vinduet Fejlfinding (eller Immediate hedder det vist på engelsk), og skal du skrive
?strsql og trykke på Enter. Så skriver den værdien af strsql. Kopier den herud, så kan vi se hvad der står.
Dim DB As DAO.Database, Def As DAO.QueryDef, Rs As DAO.Recordset Set DB = CurrentDb() Set Def = DB.QueryDefs("Query1") '<---Her skriver du forespørgselsnavn Set Rs = Def.OpenRecordset(dbOpenDynset)
Har lige en hasteopg.... så jeg er lige væk et stykke tid...
Synes godt om
Slettet bruger
10. august 2005 - 15:56#79
Jeg er nød til at gå nu, men jeg bukker og takker for indsatsen og ligger nogle points ud imorgen. Men der altså 30 point til den der lige kan løse 15:39:23 Formularen oppetid, som er åben indeholder en underformular kaldet subformoppetid og her er der et felt, der hedder pallenr og hvis man står i sidste post, så skal jeg bruge tallet til venstre i pallenr!~)
spg > Hvis det er muligt for dig, kan det være en rigtigt god ide at sende mailen til madschristensen (min Access er jo desværre for gammel). Hvis ikke så synes jeg du skulle prøve det som jeg skrev 10/08-2005 15:22:45 Det giver en bedre mulighed for os "herude" at se, hvad det er, der sker.
Synes godt om
Slettet bruger
11. august 2005 - 12:57#84
Jeg har besluttet mig for at lukke spørgsmålet, fordi at jeg forudser andre problemer efter at dette er løst, så jeg omstrukturerer lidt. Det har noget at gøre med sortering af tal, defineret som tekst. Det har noget at gøre med de her pallenumre, når de bliver på flere cifre. I det hele taget laver jeg det lidt om for at gøre hovedformularen, så entydig som mulig. (Samtidig kan jeg gøre det simplere for mig selv!~)
Det er dog hårdt at skulle lade et problem ligge uløst og jeg håber ikke i ligger vågne i nat, men vi har sikkert alle andre projekter, der kunne bruges lidt tid på!~)
Bare rolig. Nattesøvnen kunne det ikke forstyrre. Der skal mere til ;0)
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.