Hej !! Hej Alternativet om du vill använda den kod du skrivit så får du loopa igenom hela recordsetet. Tack för svaret men .. jag får det inte att funka helt OK. Är projektnr-kulumnen numeriskt? Om inte: Hej Hej Jocke och Sven !! Puss på dig Sven...Radera flera poster i en databas
Jag har via en SQL-sats selekterat ut matchande poster i en databas.
Min SQL-sats ser ut så här:
Data3.DatabaseName = "c:\program\Regina Golv\Golv.mdb"
Data3.RecordSource = "Objekt2"
SQL1 = "SELECT * FROM Objekt2 Where KundNr = '"
SQL1 = SQL + txtProjKundNr + "'"
SQL1 = SQL & "And ProjNr = '" + txtProjID + "'"
Data3.RecordSource = SQL1
Data3.Recordset.Delete
Data3.Refresh
Om jag kör denna sats, raderas endast den första posten. På vilket sätt skall koden kompletteras för att radera samtliga poster som hittats ?
Går det att använda bookmark eller ..
Tacksam för snabbt svar !!
ArneSv: Radera flera poster i en databas
När du gör Delete via SQL är det bättre att använda
den här metoden. Ta bort alla KundId 25
Dim DbKund As Database
Dim SQLstr As String
id = 25 'konstruerat exempel
On Error GoTo DeleteErr
SQLstr = "DELETE * FROM FAKTURA " & _
"WHERE KundId = " & id
Set DbKund = OpenDatabase("c:\program\Regina Golv\Golv.mdb")
DbKund.Execute (SQLstr)
Set DbKund = Nothing
Data3.Refresh
mvh
SvenSv: Radera flera poster i en databas
Anledningen till att du bara raderar en post är att när du hämtar en recordsource så returneras alla poster som uppfyller med en pekare på den första posten. Sv: Radera flera poster i en databas
När jag kör satsen får jag följande felmeddelande: Run-time error 3464 "Blandningsfel i villkorsuttryck"
Debugger stannar på: DbKund.Execute (SQLstr)
Vad är felet ???
Så här ser satsen ut nu:
Private Sub Command2_Click()
'allmän selektering av poster
Data3.DatabaseName = "c:\program\Regina Golv\Golv.mdb"
Data3.RecordSource = "Objekt2"
SQL = "SELECT * FROM Objekt2 Where KundNr = '"
SQL = SQL + txtProjKundNr + "'"
SQL = SQL & "And ProjNr = '" + txtProjID + "'"
Data3.RecordSource = SQL
Data3.Refresh
' en kontroll av antalet poster
Data3.Recordset.MoveLast
AntObjekt = Data3.Recordset.RecordCount
If AntObjekt = -1 Then
Debug.Print "Count not available."
End If
MsgBox "Antal kostnader i Objekt2 är:" & Space(2) & AntObjekt
Data3.Recordset.MoveFirst
' tänkt radering av selekterade poster (modifierat)
Dim DbKund As Database
Dim SQLstr As String
id = "160" 'konstruerat exempel
'On Error GoTo S
SQLstr = "DELETE * FROM OBJEKT2 " & _
" WHERE ProjNr = " & id
Set DbKund = OpenDatabase("c:\program\Regina Golv\Golv.mdb")
DbKund.Execute (SQLstr)
Set DbKund = Nothing
S:
Data3.Refresh
End Sub
Om du önskar databasen för prov, just let me know !!
ArneSv: Radera flera poster i en databas
SQLstr = "DELETE FROM OBJEKT2 WHERE ProjNr = '" & id & "'"
/JockeSv: Radera flera poster i en databas
Precis som Jocke skriver
Antinge är projekNr ett tal eller så är det en textsträng
Om det är en sträng skall det omslutas med "fnuttar" 'id'
om inte inga "fnuttar"
mvh
Sven Sv: Radera flera poster i en databas
Tack för hjälpen ! Vad vore livet utan pellesoft.nu !!
Jocke: Din korrigering ang. numerisk tabell funkade. TackSv: Radera flera poster i en databas
Verkar som jag inte gjort någon inverkan på dig, när jag kritiserade dig för paranteser till anrop som inte retunerar värden. Du kommer nog alltid vara den du är. Trevligt att det är nån man kan lita på... :O)