24. marts 2004 - 23:25Der er
22 kommentarer og 1 løsning
har brug for hutig hjælp til at sammen sætte to koder!!
JEg har følgende kode:Sub OPdaterSalg() TimeReg opdaterkundedata RydArk End Sub
Sub opdaterkundedata()
Dim Antal As Byte Antal = 0
BilAbbNormal: For Each C In Range("D26:D29") ' Normal abb. If C.Value <> "" Then For Each CE In Range("B65:B69") ' hvis en af felterne med reg.nr er udfyldt, så ok If CE.Value <> "" Then GoTo BilSuper End If Next CE MsgBox "Der skal indtastes Registrerings nummer på bil(er)" Exit Sub End If Next C BilSuper: If Range("D30").Value <> "" Or Range("D31").Value <> "" Then ' BilSuper og BilSuper kombirabat For Each CE In Range("B65:B69") ' tjekker om der er mere end 1 bil If CE.Value <> "" Then Antal = Antal + 1 End If Next If Antal = 0 Then MsgBox "Der Skal indtastes registrerings nummer på en' bil" Exit Sub ElseIf Antal > 1 Then MsgBox "Der må kun indtastes registrerings nummer på en' bil" & vbLf _ & "Når der er valgt Bil Super" Exit Sub End If End If
DataOK:
Call FindProdukter ' her finder den de valgte produkter
Datasti = "C:\Documents and Settings\smallsystems\Skrivebord\VITUS CRM\Prologic\Prologic marketing den. 23-03-04\Nyeste\Ny mappe\Ordre.mdb" ' Lav en forbindelse til Access databasen Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source=" & Datasti & ";"
Set rs = New ADODB.Recordset ' Åben et emnemain data del If MsgBox("Tjek om data er korrekt inden de indsættes i kundedatabasen?", vbQuestion + vbOKCancel, "Skal de indsættes i TimeReg?") = vbCancel Then Exit Sub End If With rs .Open "DataFraExcel where [EmneNr]= '" & Range("J5").Value & "'", cn, adOpenKeyset, adLockOptimistic, adCmdTable If .EOF Then .AddNew ' Ny kunde .Fields("EmneNr") = Range("J5").Value Else ' If MsgBox("Kunden eksisterer - skal kundebasisdata opdateres ?", vbYesNo, "Kunde eksisterer") = vbNo Then ' .Close ' GoTo nokundeupdate ' End If
End If
' tilføj værdier til hvert felt i recorden .Fields("Navn") = Range("E4").Value .Fields("Adresse") = Range("E5").Value .Fields("PostNr") = Range("E6").Value .Fields("TelefonNr") = Range("H7").Value .Fields("Fødselsdag") = Range("J6").Value .Fields("Phoner id") = Range("E7").Value .Fields("Omsætning") = Range("G72").Value ' .Fields("Ikraftdato") = Range("J7").Value ' ved ikke om den skal bruges, den kommer på senere .Fields("Regnr") = Range("D78").Value .Fields("Kontonr") = Range("D79").Value .Fields("Cpr") = Range("D80").Value .Fields("Dagsdato") = Range("J4").Value .Fields("Kronisksyg") = Trim(Range("G78").Value) .Fields("Bemærkning") = Range("B83").Value & Range("B84").Value For I = 1 To 6 If I < 6 Then .Fields("Bil regnr" & I) = Range("B" & 64 + I).Value ' der er kun 5 biler .Fields("Produktnr" & I) = Produkter(I, 2) .Fields("Produkttekst" & I) = Produkter(I, 3) .Fields("Ikraftdato" & I) = Range("J7").Value ' her kan indsættes flere i serier Next ' tilpas til aktuel tabel .Update ' gem den nye record .Close
' ********************************** har rettet hertil ( Louise) ****************************
End With ' ' Set rs = Nothing
End Sub
Public Sub FindProdukter() Dim X As Byte X = 1 For Each C In Range("D11:D62") If C <> "" Then Produkter(X, 1) = C ' denne indeholder antallet af det enkelte produkt , skal det ikke bruges. ? For I = 2 To 3 Produkter(X, I) = C.Offset(0, I - 1) Next X = X + 1 End If Next End Sub
Men den afspiller ikke alle mine første subs - hvad gør jeg..
HEj med dig igen det går ikke lige så godt for mig alle de koder du lavede har min chef bedt mig om at smide i en knap og nu er der intet der virker det er forskelligt nogle gange afspiller den ikke timereg andre gange opdaterkunde
systemet skal tages i brug imorgen - og jeg er slet ikke færdig - Jeg kan ikke se hvad jeg gør galt har prøvet og prøvet den registere kun data i en af databaserne
Fordi kunden vi arbejder for i den marketings virk jeg er i vil kun aflevere skema i excel og derfor mener min at det skal foregå på den måde.. jeg vil hoppe i send - 1000 tak for din store hjælp;-) det sætter jeg pris på nat
Du skal have en global bolean til at styre om det, den afbryder subben hvis du fortryder undervejs.
Hvis du også har en msgbox i de andre 2 subs, "TimeReg" og "RydArk" så skal du sætte Opdater = False , ligesom jeg har gjort i "opdaterkundedata".
Bolean'en hedder Opdater, det er den lige her under, den skal stå øverst uden for subben.
Dim Opdater As bolean
Sub OPdaterSalg() Opdater = True TimeReg If Opdater = False Then Exit Sub opdaterkundedata If Opdater = False Then Exit Sub RydArk End Sub
Sub opdaterkundedata()
Dim Antal As Byte Antal = 0
BilAbbNormal: For Each C In Range("D26:D29") ' Normal abb. If C.Value <> "" Then For Each CE In Range("B65:B69") ' hvis en af felterne med reg.nr er udfyldt, så ok If CE.Value <> "" Then GoTo BilSuper End If Next CE MsgBox "Der skal indtastes Registrerings nummer på bil(er)"
Opdater = False ' NY LINIE
Exit Sub End If Next C BilSuper: If Range("D30").Value <> "" Or Range("D31").Value <> "" Then ' BilSuper og BilSuper kombirabat For Each CE In Range("B65:B69") ' tjekker om der er mere end 1 bil If CE.Value <> "" Then Antal = Antal + 1 End If Next If Antal = 0 Then MsgBox "Der Skal indtastes registrerings nummer på en' bil"
Opdater = False ' NY LINIE
Exit Sub ElseIf Antal > 1 Then MsgBox "Der må kun indtastes registrerings nummer på en' bil" & vbLf _ & "Når der er valgt Bil Super"
Opdater = False ' NY LINIE
Exit Sub End If End If
DataOK:
Call FindProdukter ' her finder den de valgte produkter
Datasti = "C:\Documents and Settings\smallsystems\Skrivebord\VITUS CRM\Prologic\Prologic marketing den. 23-03-04\Nyeste\Ny mappe\Ordre.mdb" ' Lav en forbindelse til Access databasen Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source=" & Datasti & ";"
Set rs = New ADODB.Recordset ' Åben et emnemain data del If MsgBox("Tjek om data er korrekt inden de indsættes i kundedatabasen?", vbQuestion + vbOKCancel, "Skal de indsættes i TimeReg?") = vbCancel Then
Opdater = False ' NY LINIE
Exit Sub End If With rs .Open "DataFraExcel where [EmneNr]= '" & Range("J5").Value & "'", cn, adOpenKeyset, adLockOptimistic, adCmdTable If .EOF Then .AddNew ' Ny kunde .Fields("EmneNr") = Range("J5").Value Else ' If MsgBox("Kunden eksisterer - skal kundebasisdata opdateres ?", vbYesNo, "Kunde eksisterer") = vbNo Then ' .Close ' GoTo nokundeupdate ' End If
End If
' tilføj værdier til hvert felt i recorden .Fields("Navn") = Range("E4").Value .Fields("Adresse") = Range("E5").Value .Fields("PostNr") = Range("E6").Value .Fields("TelefonNr") = Range("H7").Value .Fields("Fødselsdag") = Range("J6").Value .Fields("Phoner id") = Range("E7").Value .Fields("Omsætning") = Range("G72").Value ' .Fields("Ikraftdato") = Range("J7").Value ' ved ikke om den skal bruges, den kommer på senere .Fields("Regnr") = Range("D78").Value .Fields("Kontonr") = Range("D79").Value .Fields("Cpr") = Range("D80").Value .Fields("Dagsdato") = Range("J4").Value .Fields("Kronisksyg") = Trim(Range("G78").Value) .Fields("Bemærkning") = Range("B83").Value & Range("B84").Value For I = 1 To 6 If I < 6 Then .Fields("Bil regnr" & I) = Range("B" & 64 + I).Value ' der er kun 5 biler .Fields("Produktnr" & I) = Produkter(I, 2) .Fields("Produkttekst" & I) = Produkter(I, 3) .Fields("Ikraftdato" & I) = Range("J7").Value ' her kan indsættes flere i serier Next ' tilpas til aktuel tabel .Update ' gem den nye record .Close
' ********************************** har rettet hertil ( Louise) ****************************
End With ' ' Set rs = Nothing
End Sub
Public Sub FindProdukter() Dim X As Byte X = 1 For Each C In Range("D11:D62") If C <> "" Then Produkter(X, 1) = C ' denne indeholder antallet af det enkelte produkt , skal det ikke bruges. ? For I = 2 To 3 Produkter(X, I) = C.Offset(0, I - 1) Next X = X + 1 End If Next End Sub
Sådan endnu en gang 1000 1000 tak for prof og hurtig hjælp!!
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.