Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


DELETA record

Postades av 2005-04-15 16:59:04 - Harry Rosendahl, i forum access, Tråden har 9 Kommentarer och lästs av 1001 personer

Hej igen och tack för senast!

Har denhär gången problem med att ”DELETA” ett nybildat record.

Problemet är som följer:
Access 2000 Formulär ”Personer”
M.h.a formuläret hanterar användaren befintliga records och skapar nya records.
Vid situationen Nytt record matar jag ut en ruta där användaren väljer avdelning från en combobox. Därefter bildar jag ett anställningsnummer av innehållet i comboboxen * 1000 + Nya recordets nyckelvärde(räknare). Anställningsnummret blir t.ex 50063 där 63 är nyckelvärdet(Räknarens värde). Rutan innehåller dessutom knapparna ”Ok” och ”Avbryt”.

Antag att användaren har valt avdelning (eller nollat värdet i avdelning comboboxen)(Nytt record har då bildats) men att användaren ändå i detta läge önskar avbryta inmatningen. I det fallet sätter ja anställningsnummret till nyckelns värde, men egentligen vill jag ta bort ”DELETA” det nybildade recordet.

Rutin som handhar situationen när användaren klickar på AVBRYT.
Private Sub cmdNyPersonAvbryt_Click()
If Not IsNull(Nyckel) Then
Anstallningsnr = Nyckel
Call TaBortFelaktigtRecord ’Ta bort felaktigt rekord och visa sista ”OK-rekordet”
Else
DoCmd.RunCommand acCmdRecordsGoToPrevious 'Visa föregående record
Exit Sub
End If

Private Sub TaBortFelaktigtRecord
'Ta bort felaktigt record
' Delete
' FROM Personer
' Where Anstallningsnr = Nyckel
’ Visa föregående record.
End Sub

Har svårt att få till rutinen ”TaBortFelaktigtRecord” .
Hoppas det finns någon som kan hjälpa mig på traven.
Mvh/ Harry


Svara

Sv: DELETA record

Postades av 2005-04-16 17:11:04 - Peter Björklund

Är inte säker på om jag förstår dig rätt i din problematik men vore det inte bättre att validera ditt formulär först innan du överhuvudtaget skapar ett nytt record?

Det känns som om du nu skapar ett nytt record till db oavsett vad du skickar in för parametrar och då får du en konstig logik att hantera som du beskriver.

Om jag förstått dig rätt i detta så gör om hela förloppet och börja med att validera dina värden som kommer in. Om de är OK kan du skapa ett nytt record annars skicka upp ett felmeddelande.


Svara

Sv:DELETA record

Postades av 2005-04-16 18:05:08 - Harry Rosendahl

Hej Peter
Du har alldeles rätt i ditt resonemang. Jag har bara inte kommit fram till hur jag skall lyckas validera innan recordet per automatik har skapats.
Jag använder nu "standard navigations knapparna (pilarna) i formuläret".
Automatiken med användning av pilarna är den att när rutan för ett nytt record dyker upp så är nyckelvärdet (räknaren) Null vilket är ok, men vid första "klickandet" på ett fält så skapas recordet trots att jag kanske inte skulle önska att så sker.
Samtidigt som jag nu skriver detta förstår jag att det ju är just det jag inte skall tillåta att sker genom att istället för att fylla i ett fält som är kopplat till DB enbart göra valideringen.
Det är ju så det skall lösas. TACK för hjälpen.
Skall genast prova, men du har alldeles rätt.
Tack än en gång. Jag hör av mig.
Mvh/ Harry

Som sagt var!! Tack för hjälpen. Allt är nu helt OK.
Ha en trevlig fortsättning på veckoslutet!!

(Jag var helt klart på väg över ån efter vatten). Du hejdade mig innan jag landade mitt i plurret.
Kan ändå inte låta bli att fråga hur SQL satsen skall se ut för att deleta ett rekord som jag via ett formulär bläddrat fram och kommit fram till att jag vill ta bort. ??


Svara

Sv: DELETA record

Postades av 2005-04-16 20:11:53 - Peter Björklund

Vad bra att det löste sig!

Ang. din DELETE fråga: kanske vore detta en lösning?

Private Sub TaBortFelaktigtRecord
Dim iNyckelVarde

iNyckelVarde = Nyckel / 1000

If iNyckelVarde > 0 Then
oCon.Execute "Delete FROM Personer Where Anstallningsnr = Nyckel"
End If
End Sub

oCon är här ditt databasobjekt.


Svara

Sv:DELETA record

Postades av 2005-04-17 07:40:52 - Harry Rosendahl

Tack igen!

Jag har mycket att ta igen. Det har gått många år sedan jag sysslade med programmering.

Må så gott! hälsar/ Harry


Svara

Sv: DELETA record

Postades av 2005-04-18 08:49:55 - Jan Bulér

Kan du inte använda dig av metoden "Me.Undo" i formuläret, då skippar du ju posten som du håller på att skapa.

Janne


Svara

Sv:DELETA record

Postades av 2005-04-18 13:32:02 - Harry Rosendahl

Tack för tipset.
Har inte testat ditt tips, men det verkar ju som om även det hade löst mitt problem. Löste problemet enligt Peters variant genom att först kolla riktigheten i den nya posten innan jag skapade eller skippade.

Kanske jag kan ställa en ny (nu aktuell fråga) i denhhär samma tråden?
Avser att ge användaren som bläddrar genom ett antal poster även möjlighet att via en combobox välja fram sin post m.h.a. personnamnet i posten istället för enbart via navigationsknapparna(pilarna).
Så långt är allt ok. Via den nya comboboxen får användaren nyckelvärdet till den post som intresserar.
Så till nya problemet.
Tänkte att jag kunde överföra det aktuella nyckelvärdet från comboboxen via en "after_update" rutin till fältet med vars hjälp man direkt kan välja en ny post. Alltså fältet som ligger mellan navigationspilarna. Problemet är bara det att jag inte kan hitta namnet på det fältet(navigationsfältet).
Är inte det fältet kanske tillgängligt att nå via programrutin?
Verkar konstigt. Tror nog mer på att jag bara inte har lyckats hitta namnet på fältet.
Tacksam igen om någon har de rätta svaren.
mvh/ Harry


Svara

Sv: DELETA record

Postades av 2005-04-18 14:11:10 - Harry Rosendahl

Eftersom jag inte hittade namnet på fältet i min föregående fråga så försökte jag använda nedanstående rutin, som msoft har som exempel i sin hjälp,
Rutinen använder sig av Me.Recordsource.

Private Sub cboPersoner_AfterUpdate()
Dim strNewRecord As String
strNewRecord = "SELECT * FROM Personer " _
& " WHERE Nyckel = '" _
& Me!cboPersoner.Value & "'"
Me.RecordSource = strNewRecord
End Sub

När jag kör programmet fastnar det på instruktionen Me.RecordSource = strNewRecord
med felmeddelandet: Körfel 2001 "Du avbröt föregående åtgärd"
Var är det som inte stämmer?


Svara

Sv:DELETA record

Postades av 2005-04-19 09:11:34 - Jan Bulér

Ett sätt att göra det på är så här.

Jag har här använt en tabell med fälten.
id, (räknare)
tidpunkt, (datum)
Beskr, (text)


Alla fälten visas i ett formulär, i formuläret har jag även en ComboBox (cmbSelect) där radkällan är
cmbSelect inställningar
Typ av radkälla : Tabell/Fråga
Radkälla : SELECT Tabell1.id, Tabell1.Beskr FROM Tabell1 ORDER BY Tabell1.Beskr;
Bunden kolumn : 1
Antal kolumner : 2
Kolumnbredder: 0 cm; x cm x = bredd som behövs för att texten ska synas

cmbSelect händelse

<code>
Private Sub cmbSelect_Change()
Me.Recordset.FindFirst ("id = " & Me.cmbSelect.Value)
End Sub
</code>

Du bör nog även komplettera koden med
<code>
Private Sub Form_AfterDelConfirm(Status As Integer)
Me.cmbSelect.Requery
End Sub

Private Sub Form_AfterInsert()
Me.cmbSelect.Requery
End Sub

Private Sub Form_AfterUpdate()
Me.cmbSelect.Requery
End Sub
</code>

cmbSelect har jag placerat i formulärets header

//
Janne


Svara

Sv: DELETA record

Postades av 2005-04-19 10:47:47 - Harry Rosendahl

Stort tack till dej igen Janne!

mvh/ Harry


Svara

Nyligen

  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 864
27 962
271 767
551
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies