Avatar billede rookie44 Juniormester
08. februar 2012 - 10:43 Der er 6 kommentarer og
1 løsning

Runtime error 3061

I nedennævnte kode linie får jeg runtime fejlen 3061
Der er for få parametre. Der var ventet 1.

Varenr er alfanumerisk. Linien er skrevet på 1 linie i programmet.
Men jeg kan umiddelbart ikke se, jeg har skrevet noget galt.
HJÆLP


Set rstVare = mydb.OpenRecordset("SELECT * FROM [T_Varer] WHERE [Varenr]= '" & rstIKlin![Varenr] & "'")
Avatar billede terry Ekspert
08. februar 2012 - 18:40 #1
If VarenR is numerical then remove "'"

Set rstVare = mydb.OpenRecordset("SELECT * FROM [T_Varer] WHERE [Varenr]= " & rstIKlin![Varenr] )
Avatar billede rookie44 Juniormester
08. februar 2012 - 18:43 #2
Nej Varenr er en tekst.

Hele koden ser sådan ud

Set mydb = CurrentDb()

Set rstVare = mydb.OpenRecordset("SELECT * FROM [T_Varer]")
rstVare.MoveLast
Antalvarer = rstVare.RecordCount
rstVare.MoveFirst

For x = 1 To Antalvarer
  rstVare.Edit
      rstVare!DispBehold = rstVare!Beholdning
  rstVare.Update
  rstVare.MoveNext
Next

'Nu skal indkøbsordrer, Produktionsordrer og salgsordrer gennemløbes
Set rstIKlin = mydb.OpenRecordset("SELECT * FROM [T_IKOrdrespec] WHERE [IkLinStatus] < 2")

rstIKlin.MoveLast
AntalIKlin = rstIKlin.RecordCount
rstIKlin.MoveFirst

For x = 1 To AntalIKlin
    Set rstVare = mydb.OpenRecordset("SELECT * FROM [T_Varer] WHERE [Varenr]= '" & rstIKlin!Varenr & "'")
    rstVare.Edit
      rstVare!DispBehold = rstVare!DispBehold + (rstIKlin!Antalbestilt - rstIKlin!Antalleveret)
    rstVare.Update
    rstIKlin.MoveNext
Next x
Avatar billede terry Ekspert
08. februar 2012 - 20:08 #3
suggestion:
have a string variable which you use to hold the contents of the SQL. Then its easier to copy the SQL to a query wher you can better see the problem.

EG:
dim sSQL as string

sSQL = "SELECT * FROM [T_Varer] WHERE [Varenr]= '" & rstIKlin!Varenr & "'"

then alter

Set rstVare = mydb.OpenRecordset(ssQL)

now you can place a break point on this line to stop the program when it reaches the break point

Now in the Immediate window (CTRL+G) you can see the contents of sSQL by writing

?sSQL

followed by enter
Now you can copy this SQL into a query wher hopefully you will see what the problem is
Avatar billede rookie44 Juniormester
08. februar 2012 - 21:18 #4
Terry

Det prøver jeg og vender tilbage.
Avatar billede Slettet bruger
09. februar 2012 - 00:10 #5
Uden helt at kende omfanget af nødvendigheden deraf, ville jeg tilføje:
rstVare.Close

som 3. sidste linie

Ved ikke om det løser problemmet
---------
Jeg kan ikke lade være med at kommentere - elsker at fremture i kunsten at kode ;-)

I stedet for at loope igennem recordset med postantal tæller:

with CurrentDb.OpenRecordset(....
  while not .eof
    'operations
    .MoveNext:Wend: End With

Unnamed variables er som sendt fra himmelen for at undgå tilsmudse med unødvendige variabel navne, brug for guds skyld ikke:

set unnessesaryvariabledetails=...
with unnessesaryvariabledetails

Når man så ad åre, for 100 gang, tvinges til at debugge fordi man har glemt et MoveNext - så laver man en klasse og tilhørende public funktion til at returne et object - og det bliver dermed til, idet eof nu er et wrap omkring det indkapslede dao recordsets eof:

with rsi(.... 'recordset iterator
  while not .eof
    'operations
    Wend: End With
---------

sql er lavet til at klare selv væsentligt mere komplekse opdateringer, dog ingen granti herfra ;-)

CurrentDb.execute "update T_Vare set DispBehold = Beholdning + (select AntalBestilt-AntalLeveret from T_IKOrdrespec WHERE IkLinStatus < 2 and varenr=T_Vare.vareNr)"
Avatar billede rookie44 Juniormester
09. februar 2012 - 11:34 #6
Ja, øjnene ser, hvad de tror de skal se.
Terry, jeg lavede en Query og opdage så at det ikke er T_Vare.Varenr men T_Vare.Varenummer. Så det hjalp.

brugereksperten.
Tak for rådene, jeg vil prøve dem, men ligenu bliver jeg nok i de gamle vaner.
Avatar billede terry Ekspert
09. februar 2012 - 18:56 #7
super, tak for points
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