Avatar billede maria.cand Nybegynder
01. oktober 2004 - 12:27 Der er 48 kommentarer og
1 løsning

Kundedatabase - Ved klik overfør data.

Jeg har en formular som er baseret på tblemner - Inde i formularen har jeg en ramme med fire alternativer:

Ring igen = værdi = 4

Afsluttet uden salg = 5

Afsluttet med salg = 2

Aldrig ring igen = 3


Når man feks vælger "aldrig ring igen" skal emnet overflyttes til en anden tabel som indeholder de samme felter som "tblEmner" og slettes fra den nuværende tabel!

Denne tabel hedder blot tblEmnerAfsluttet - Men hvordan kan man gøre dette?? - og er det muligt?
Avatar billede jensen363 Forsker
01. oktober 2004 - 12:30 #1
Det er muligt ...

Jeg kommer med et eksempel ...
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 12:38 #2
Kanon;-)
Avatar billede jensen363 Forsker
01. oktober 2004 - 13:12 #3
Eksempel :

Private Sub GruppeBoks_AfterUpdate()
Dim strSQL As String
Dim db As DAO.Database

    Set db = CurrentDb()
     
    If GruppeBoks.Value = 3 Then
   
      strSQL = "INSERT INTO Tabel2 ( Kundeid, KundeNavn ) "
      strSQL = strSQL & "SELECT Tabel1.Kundeid, Tabel1.KundeNavn "
      strSQL = strSQL & "FROM Tabel1 "
      strSQL = strSQL & "WHERE (((Tabel1.Kundeid)=[Formularer]![Formular1]![Kundeid]));"

    db.Execute strSQL
   
      strSQL = "Delete Tabel1.Kundeid, "
      strSQL = strSQL & "Tabel1.KundeNavn "
      strSQL = strSQL & "FROM Tabel1 "
      strSQL = strSQL & "WHERE (((Tabel1.Kundeid)=[Formularer]![Formular1]![Kundeid]));"

    db.Execute strSQL
   
    Else
   
    End If
   
End Sub
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 13:29 #4
Er der ikke nem måde hvis nu det er alle data fra tabel1 der skal over i tabel2 hvis value = 3??
Avatar billede jensen363 Forsker
01. oktober 2004 - 13:34 #5
Selvfølgelig ... 2 sekunder
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 13:36 #6
Perfekt
Avatar billede jensen363 Forsker
01. oktober 2004 - 13:38 #7
Private Sub SletKnap_Click()
Dim strSQL As String
Dim db As DAO.Database

    Set db = CurrentDb()
     
      strSQL = "INSERT INTO Tabel2 ( Kundeid, KundeNavn ) "
      strSQL = strSQL & "SELECT Tabel1.Kundeid, Tabel1.KundeNavn "
      strSQL = strSQL & "FROM Tabel1 "
      strSQL = strSQL & "WHERE (((Tabel1.value)=3));"

    db.Execute strSQL
   
      strSQL = "Delete Tabel1.Kundeid, "
      strSQL = strSQL & "Tabel1.KundeNavn "
      strSQL = strSQL & "FROM Tabel1 "
      strSQL = strSQL & "WHERE (((Tabel1.value)=3));"

    db.Execute strSQL
   
   
End Sub
Avatar billede jensen363 Forsker
01. oktober 2004 - 13:39 #8
Fremgangsmåden er du indarbejder en knap på formularen, eventuelt kan du vælge at udføre funktionen ved lukning af formularen.
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 13:43 #9
JAmen i denne kode skal jeg jo alligevel skrive de felter med dertilhørende poster der skal overføres - SELECT tblEmner.EmneId, tblEmner.NationelltVal, tblEmner.InternationelltVal, tblEmner.KundeAnsvarlig, tblEmner.Foretagsnamn, tblEmner.Orgnr, tblEmner.Gatuadress, tblEmner.Postnr, tblEmner.Ort, tblEmner.NACE_KOD, tblEmner.KontaktNamn, tblEmner.Branche, tblEmner.KontaktTelefonnr, tblEmner.Fax, tblEmner.Mobiltelefonnr, tblEmner.Hjemmeside, tblEmner.Phoner, tblEmner.KontaktEmail, tblEmner.Noter, tblEmner.OpkaldStatus, tblEmner.MoedeType, tblEmner.AnsvarligMedarbejder, tblEmner.SidsteOpringning, tblEmner.StatusDato, tblEmner.SidsteStatus, tblEmner.RingIgen, tblEmner.Slet, tblEmner.Prislistenr, tblEmner.Gruppnummer, tblEmner.Direktvalsnummer, tblEmner.Anummer, tblEmner.SaljDatum, tblEmner.VIRKSOMHEDSFORM, tblEmner.felt1, tblEmner.Fornamn, tblEmner.Efternamn, tblEmner.Salg, tblEmner.[Afsluttet og godkendt]
FROM tblEmner;
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 13:45 #10
Der er så mange felter i min tabel der skal flyttes til tabel2 hvis værdien er = 3 - Så er det jeg spøger efter kan man ikke bare lave det sådan at den flytter alle felter og poster for det pågældende emne??
Avatar billede jensen363 Forsker
01. oktober 2004 - 13:58 #11
Private Sub SletKnap_Click()
Dim strSQL As String
Dim db As DAO.Database

    Set db = CurrentDb()
     
      strSQL = "INSERT INTO Tabel2 "
      strSQL = strSQL & "SELECT Tabel1.* "
      strSQL = strSQL & "FROM Tabel1 "
      strSQL = strSQL & "WHERE (((Tabel1.value)=3));"

    db.Execute strSQL
   
      strSQL = "Delete * "
      strSQL = strSQL & "FROM Tabel1 "
      strSQL = strSQL & "WHERE (((Tabel1.value)=3));"

    db.Execute strSQL
   
   
End Sub
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 14:05 #12
"strSQL = strSQL & "WHERE (((Tabel1.value)=3));" - Skal der ikke står rammen?? - JEg laver det med en almindelig afkrydsningsboks i stedet - Den hedder afsluttet når denne er = true skal den den overflytte alle - HVordan ser det så ud? - Håber du vil hjælpe en sidste gang?
Avatar billede jensen363 Forsker
01. oktober 2004 - 14:11 #13
Den nævnte fremgangsmåde forudsætter, at værdien ( 3 ) gemmes i tblEmner, vel i feltet [Afsluttet og godkendt]
Avatar billede jensen363 Forsker
01. oktober 2004 - 14:12 #14
Dvs.  strSQL = strSQL & "WHERE (((tblEmner.[Afsluttet og godkendt])=3));"
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 14:22 #15
Fuck det virker bare slet ikke for mig - ved ikke helt om vi misforstår hinanden
Avatar billede jensen363 Forsker
01. oktober 2004 - 14:23 #16
OBS ! ... har du ref til DAO 3.6 ( i modulkodevindu )
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 14:23 #17
Jeg har en afkrydningsboks der hedder Godkend og afslut når jeg trykker på denne og der er et flue ben skal min post / emne overføres til tabel2;-)
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 14:24 #18
Jeps har ref hertil
Avatar billede jensen363 Forsker
01. oktober 2004 - 14:25 #19
Det flueben, sætter du det i tabellen, eller kun på formularen ?
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 14:34 #20
Jeg sætter det i formularen - Men det har en -1 for ja og 0=nej i tabellen - Så jo det optræder begge steder!!
Avatar billede jensen363 Forsker
01. oktober 2004 - 14:40 #21
Oplysninger/værdien ( Aldrig ring igen = 3 ) ... hvor gemmes den ?
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 14:44 #22
I opkalfdsstatus - men den skal jeg jo sådan set ikke bruge tl noget hvis det bliver ud fra afkrydningsfeltet!!
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 14:47 #23
Aldrig ring igen gemmes ja i opkaldsstatus - men den skal jeg ikke bruge til noget i denne sammenhæng - DEt er jo afkrydsningsboksen Afslut og godkend der skal afgøre om data skal flyttes..
Avatar billede jensen363 Forsker
01. oktober 2004 - 14:48 #24
Jo, når du vælger at lave en total overførsel, hhv. sletning af data fra den ene til den anden tabel, er du nødt til at have værdien 3 som rettesnor for, hvad der skal ske med data.

Dvs. kriteriet er så :

strSQL = strSQL & "WHERE (((tblEmner.opkalfdsstatus)=3));"
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 14:50 #25
jamen så kunne jeg vel bare have - godkend og afslut til at være "-1" - så kan de vel være rettesnor??
Avatar billede jensen363 Forsker
01. oktober 2004 - 14:53 #26
Hvis det er det som afgør om data skal gemmes, er dette korrekt ... men det var ikke lige det som du havde i din opgavebeskrivelse ... c",)
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 14:57 #27
sorry - Men den har også ændret sig lidt undervejs - fik jo et par gode ideer da du kom på banen - Nu er spørgsmålet bare hvordan jeg skriver koden når det skal være en afkrydsningsboks!! -
Avatar billede jensen363 Forsker
01. oktober 2004 - 15:02 #28
Det afgørende er fortsat, at når du vil overføre flere poster til en anden tabel og efterfølgende slette de samme data fra den oprindeligt, er du nødt til at identificere disse poster, og du har altså nu to muligheder som jeg ser det :

  1. WHERE (((tblEmner.opkalfdsstatus)=3))
  2. WHERE (((tblEmner.[Godkendt og afsluttet])=-1))
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 15:10 #29
Jeg er fuldstændig stået af nu..c",) Jeg vil overflytte flere poster til en tabel og slette dem fra den anden - eller skjule dem hvis dette er muligt!  - Men jeg vil kun gøre det ved en ad gangen. Når den får en kryds i Godkendt og afsluttet skal der ske følgende: Data flyttes til tblemner_afsluttet
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 15:11 #30
Det er meget svære end jeg havde regnet med..
Avatar billede jensen363 Forsker
01. oktober 2004 - 15:12 #31
Nu er jeg stået af .....

Er der ikke nem måde hvis nu det er alle data fra tabel1 der skal over i tabel2 hvis value = 3??
Avatar billede jensen363 Forsker
01. oktober 2004 - 15:13 #32
Jeg tror vi har snakket helt forbi hinanden på et ret tidligt tidspunkt ....
Avatar billede jensen363 Forsker
01. oktober 2004 - 15:18 #33
Har du mulighed for at zippe databasen og maile den til mig : ose@post.dk
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 15:18 #34
Hmm - jeg prøver slev at finde en løsning;-)
Avatar billede maria.cand Nybegynder
01. oktober 2004 - 15:19 #35
Læg et svar og du får point!!
Avatar billede jensen363 Forsker
01. oktober 2004 - 15:21 #36
Ikke før vi har fundet en løsning ... c",)
Avatar billede jensen363 Forsker
01. oktober 2004 - 15:30 #37
1  Som udgangspunkt ...

tblEmner.opkaldsstatus  ( value = 2 - 4 )
tblEmner.[Godkendt og afsluttet]  ( value = 0 eller -1 )

Findes og gemmmes disse to i tabellen ?

2 Du arbejder med en alternativboks hvor du angiver som du skriver ( 2 - 4 )

I hvilken sammenhæng benyttes Godkendt og afsluttet ???

Er det kombinationen af Aldrig ring igen = 3 og Godkendt og afsluttet du vil have kopieret over i tblEmnerAfsluttet ????

Vi er ret langt omkring c",)
Avatar billede maria.cand Nybegynder
03. oktober 2004 - 13:43 #38
Når opkaldsstatus som er alternativer har værdien:

Afsluttet uden salg = 5

Afsluttet med salg = 2

Aldrig ring igen = 3

skal de flyttes over i TblEmnerafsluttet -

Dog vil jeg også gerne have en løsning hvor hvis der er et kryds i i Godkendt og afsluttet ( som ikke er en alternativboks, men en afkrydsningsboks) - hvis denne ertrue skal data flyttes til TblEmner afsluttet - SÅ har jeg nemlig to løsninger at vælge imellem..
Avatar billede supertekst Ekspert
13. oktober 2004 - 08:24 #39
Hej

Såfremt du ikke har fået en endelig løsning - så har jeg et alternativ:

Indsæt en knap (Kopier & Slet) i formularen. Når denne knap aktiveres vil den, den pågældende post i den underliggende tabel bliver kopieret til den anden tabel. Herefter vil posten blive slettet.

Du kan herved selv bestemme, hvornår en post skal kopieres & slettes.

Alle felter - uanset antal vil blive kopieret.

I koden skal der blot indsættes navnet på de to tabeller, nøglefeltets navn i formularen samt nøglefeltets feltnr. i tabellen.

Giv signal, hvis du er interesseret i at få koden.

MVH
Avatar billede maria.cand Nybegynder
13. oktober 2004 - 10:06 #40
Meget interessret i at få koden!!
Avatar billede maria.cand Nybegynder
13. oktober 2004 - 10:06 #41
Du har endnu ikke lagt et svar - så du kan jo ikke få point!!
Avatar billede supertekst Ekspert
13. oktober 2004 - 13:02 #42
Her er koden: linien, hvor du skal tilpasse navne m.v. er markeret med <<<<<< som kommentar.

Option Compare Database
Option Explicit
Dim sletning As Boolean, id
Private Sub Form_Open(Cancel As Integer)    'Ved åbning af formularen
    sletning = False
End Sub
Private Sub Kommandoknap124_Click()          '<<<<<< Slet knappen's hændelse
    sletning = True
Rem =============
    id = [kortnr]                            '<<<<<< formularfeltet's navn for nøglefeltet *)
Rem =============
End Sub
Private Sub Form_Current()                  'Når posten aktiveres - undersøges om der skal ske sletning af forrige
    If sletning = True Then
        slet
    End If
    sletning = False
End Sub
Private Sub slet()
Rem =============================
Const tabel1 = "stamdata"                    '<<<<<< primære tabel
Const tabel2 = "kopi af stamdata"            '<<<<<< tabel for slettede data
Const idfeltnr = 0                          '<<<<<< nøglefeltets *) plads i den primære tabel - 1. felt = 0
Rem =============================

Dim dbx As Database, stam, Kopi, aktuellepost, f
     
    Set dbx = CurrentDb
    Set Kopi = dbx.OpenRecordset(tabel2)
    Set stam = dbx.OpenRecordset(tabel1)
         
    If findAktuelle(stam, id, idfeltnr) = True Then
        With Kopi
            .AddNew
            For Each f In dbx.TableDefs(tabel1).Fields
                .Fields(f.Name).Value = stam.Fields(f.Name).Value
            Next f
            .Update
        End With
   
        stam.Delete
    End If
End Sub
Private Function findAktuelle(stam, id, feltNr) 'find posten i den primære tabel
Dim f
    For f = 1 To stam.RecordCount
        With stam
            If .Fields(feltNr) = id Then
                findAktuelle = True
                Exit Function
            End If
            .MoveNext
        End With
    Next f
    findAktuelle = False
End Function



MVH
Avatar billede maria.cand Nybegynder
13. oktober 2004 - 13:22 #43
Hmm nu er jeg jo ikke super god til det her - men jeg prøver den lige og så vender jeg tilbage
Avatar billede maria.cand Nybegynder
27. oktober 2004 - 16:34 #44
Jeg kan ikke få en skid til at virke - øv
Avatar billede maria.cand Nybegynder
02. november 2004 - 09:21 #45
Supertekt - du kunne vel ikke lave et par eksempeler - både et med alternativbokse, kommandoknap, og afkrydningsboks - så er du sku en guttermand og så sende det på en mail til mariacand@webspeed.dk - jeg vil godet give dig nogle flere point!! :-)
Avatar billede supertekst Ekspert
02. november 2004 - 09:41 #46
Hej maria.cand

Har du fået noget til at fungere?

MVH
Avatar billede areon Nybegynder
23. november 2004 - 08:23 #47
Hejsa supertekst... Jeg sidder altså med samme spm som Maria.. var det muligt at du kunne sende de eksempler til mig også.. jeg syns hellerikke jeg kan HITTE u a d!! :( Jeg vil selvfølgelig også gerne give nogle points for d..
Med venlig hilsen
th
på forhånd takker... min email er= ts"a"net4you.bg
Avatar billede areon Nybegynder
23. november 2004 - 09:31 #48
THNXXXX a 1.000.000!! :=) vil du have lidt poits eller en kold fad ved lejlighed? :=)
Avatar billede supertekst Ekspert
23. november 2004 - 10:02 #49
Selv tak - der kan måske være lidt langt for en fad at nå¨til Skive - så et par points er vel nemmere.

MVH
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