28. februar 2002 - 13:47Der er
27 kommentarer og 1 løsning
Compilerings fejl
Når jeg kompilere får jeg en fejl. Jeg har lavet en funktion som skal finde noget data, og det som er blevet fundet skal slettes. Er der nogen som kan se hvad jeg skal gøre?
Function SletDebitor() As Integer Dim Dbs As Database Dim Rst1 As Recordset Dim Rst2 As Recordset Dim strSQL1 As String Dim DebitorNr As String Dim svar As Integer svar = MsgBox("Er du sikker på at slette?", vbYesNo + vbCritical + vbDefaultButton2, "Slet Debitor")
Set Dbs = CurrentDb strSQL1 = "SELECT SL01001 FROM SL01 WHERE SL01050 BETWEEN #01/01/1901# AND #31/12/96#" Set Rst1 = Dbs.OpenRecordset(strSQL1)
Set Rst2 = Dbs.OpenRecordset("SL01") If Not Rst1.EOF Then Rst2.Index = "SL01001" Rst2.Seek "=", "'& DebitorNr&'" Rst2.Delete Rst1.MoveNext
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
thomasjepsen: er du sikker på at det skal stå som du siger? Rst2.Seek "=", "'" & DebitorNr & "'" Jeg får en anden fejl når jeg skriver dette, men det er heler ikke det der er problemmet
Er dit debitornummer virkelig en string? Også i databasen? Hvis det er, skal du bruge metoden Thomasjepsen skriver - eller alternativt Rst2.Seek "=", """ & DebitorNr & """ Det skulle nu ikke gøre nogen forskel. Men er det i den linie du får fejlen? Og er det under afviklingen eller ved compilering? I øvrigt, vil du slette alle poster med det debitornummer? Så ville det være lettere at gøre det med et enkelt delete-statement. Hvis du vil slette flere og vil bruge seek og movenext, så ville jeg begynde fra den sidste post og bevæge mig baglæns. Jeg har været ude for at få problemer med positionering på den anden måde.
Man behøver ikke sætte indeks og lave .seek efter hver. Når index er sat bevæger man sig frem efter det i recordsettet og med .seek bevæger man sig til en bestemt position. Herfra kan man så .movenext'e sig frem til den den sidste post eller til nøglefeltet/felterne ikke længere matcher kriterierne.
Men du har nu stadig ret i pointen; det skal være et loop. Men det ville bare være væsentligt nemmere og sikkert også langt hurtigere, med en delete-sql.
Jo, med mindre du vil slette ALLE poster mellem 1. jan 01 og 31. dec 96 og ikke kun dem for den ene debitor. Vær for resten opmærksom på at du efterlader de poster som er lavet efter midnat 31. dec 96.
Tak for hjælpen. nettet gik ned, men er tilbage. :o)
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.