Just nu i M3-nätverket
Jump to content

Nybörjarhjälp. MKT tacksam för hjälp!


visslaren

Recommended Posts

Hej!

 

Det är så att jag sitter med en skoluppgift (ej obligatorisk) som ger mig bonuspoäng på en kommande tenta. Jag läser en nybörjarkurs i VB6 och uppgiften är följande:

 

Skriv ett program som beräknar portot för en postförsändelse. Programmet skall fråga användaren om försändelsens tyngd, vart det skall skickas och vilken sorts försändelse det gäller. Programmet skall, förutom att meddela portot, informera användaren om brevet ska märkas på något av 3 följande sätt "prioritaire, Ekonomibrev eller Expressetikett"

 

Jag har löst porto biten, bara det att när jag kör programmet så skriver den ut alla typer av försändelser. Kolla koden och försök beskriva vad jag skall göra. Jag tror att det är nån if sats som skall till eller nått. Just nu så stoppas inte utskriften om det är "fel" val som skrivits in utan den skriver ut alltihop.

 

Så här ser koden ut: (Koden är gjort i en knapp, slarvigt men det är nyböjarnivå som sagt)

 

Private Sub Command1_Click()

Dim intForsandelseVikt As Integer

Dim strForsandelseVar As String

Dim strTypAvForsandelse As String

Dim intPorto As Integer

intForsandelseVikt = InputBox("Hur många gram väger din försändelse?")

strForsandelseVar = InputBox("Skall du skicka din försändelse Inrikes eller Utrikes?")

strTypAvForsandelse = InputBox("Vad är det för typ av försändelse?")

 

'Här baseras portot på vikt, Inrikesförsändelse och typ av försändelse

If intForsandelseVikt > 0 <= 20 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Brev" Then intPorto = 5

If intForsandelseVikt > 20 <= 100 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Brev" Then intPorto = 15

If intForsandelseVikt > 100 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Brev" Then intPorto = 30

MsgBox "Ditt porto blir " & intPorto

 

If intForsandelseVikt > 0 <= 20 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 4.5

If intForsandelseVikt > 20 <= 100 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 12

If intForsandelseVikt > 100 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 22

MsgBox "Ditt porto blir " & intPorto

 

'Här baseras portot på vikt, Utrikesförsändelse och typ av försändelse

If intForsandelseVikt > 0 <= 20 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Expressbrev" Then intPorto = 60

If intForsandelseVikt > 20 <= 50 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Expressbrev" Then intPorto = 65

If intForsandelseVikt > 50 <= 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Expressbrev" Then intPorto = 70

If intForsandelseVikt > 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Expressbrev" Then intPorto = 75

MsgBox "Ditt porto blir " & intPorto & "." & " Märk din försändelse med Expressetikett"

 

If intForsandelseVikt > 0 <= 20 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "1:a klass brev" Then intPorto = 6

If intForsandelseVikt > 20 <= 50 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "1:a klass brev" Then intPorto = 12

If intForsandelseVikt > 50 <= 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "1:a klass brev" Then intPorto = 14

If intForsandelseVikt > 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "1:a klass brev" Then intPorto = 22

MsgBox "Ditt porto blir " & intPorto & "." & " Märk din försändelse med Prioritaire"

 

If intForsandelseVikt > 0 <= 20 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 5

If intForsandelseVikt > 20 <= 50 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 10

If intForsandelseVikt > 50 <= 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 12

If intForsandelseVikt > 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 18

MsgBox "Ditt porto blir " & intPorto & "." & " Märk din försändelse med B Ekonomibrev"

End Sub

 

Jag är evigt tacksam om någon kan hjälpa mig.

/visslaren

 

Link to comment
Share on other sites

[color="#0000ff"]If[/color] intForsandelseVikt > 0 <= 20 [color="#0000ff"]And[/color] strForsandelseVar = [GRÅ]"Inrikes"[/GRÅ] [color="#0000ff"]And[/color] strTypAvForsandelse = [GRÅ]"Brev"[/GRÅ] [color="#0000ff"]Then[/color] intPorto = 5

Du kan inte skriva intForsandelseVikt > 0 <= 20 för att kontrollera om värdet ligger emellan två värden.

 

Du får lägga till en And

[color="#0000ff"]If[/color] intForsandelseVikt > 0 [color="#0000ff"]And[/color] intForsandelseVikt <= 20 [color="#0000ff"]And[/color] strForsandelseVar = [GRÅ]"Inrikes"[/GRÅ] [color="#0000ff"]And[/color] strTypAvForsandelse = [GRÅ]"Brev"[/GRÅ] [color="#0000ff"]Then[/color] intPorto = 5

osv...

 

 

 

<edit>skrev fel förut, jag fattar inte var jag fick Java ifrån ...

 

[inlägget ändrat 2004-11-08 12:48:48 av 0x2A]

Link to comment
Share on other sites

Hejsan. Ledsen men det funkar inte, Skriver jag nu att Brevet väger tex 20 så säger den att portot är 0. Problemet är att programmet går igenom alla MsgBoxarna. Måste få dem att förstå att om brevet tex är Inrikes och ett Ekonomibrev så ska den inte skriva ut allt det andra :(

 

Link to comment
Share on other sites

Ett förslag på lösning

 

Private Sub Command1_Click()

Dim intForsandelseVikt As Integer

Dim strForsandelseVar As String

Dim strTypAvForsandelse As String

Dim intPorto As Integer

intForsandelseVikt = InputBox("Hur många gram väger din försändelse?")

strForsandelseVar = InputBox("Skall du skicka din försändelse Inrikes eller Utrikes?")

strTypAvForsandelse = InputBox("Vad är det för typ av försändelse?")

 

'Här baseras portot på vikt, Inrikesförsändelse och typ av försändelse

If intForsandelseVikt > 0 And intForsandelseVikt <= 20 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Brev" Then intPorto = 5

If intForsandelseVikt > 20 And intForsandelseVikt <= 100 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Brev" Then intPorto = 15

If intForsandelseVikt > 100 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Brev" Then intPorto = 30

If strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Brev" Then

MsgBox "Ditt porto blir " & intPorto

End If

 

If intForsandelseVikt > 0 And intForsandelseVikt <= 20 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 4.5

If intForsandelseVikt > 20 And intForsandelseVikt <= 100 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 12

If intForsandelseVikt > 100 And strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 22

If strForsandelseVar = "Inrikes" And strTypAvForsandelse = "Ekonomibrev" Then

MsgBox "Ditt porto blir " & intPorto

End If

 

'Här baseras portot på vikt, Utrikesförsändelse och typ av försändelse

If intForsandelseVikt > 0 And intForsandelseVikt <= 20 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Expressbrev" Then intPorto = 60

If intForsandelseVikt > 20 And intForsandelseVikt <= 50 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Expressbrev" Then intPorto = 65

If intForsandelseVikt > 50 And intForsandelseVikt <= 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Expressbrev" Then intPorto = 70

If intForsandelseVikt > 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Expressbrev" Then intPorto = 75

If strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Expressbrev" Then

MsgBox "Ditt porto blir " & intPorto & "." & " Märk din försändelse med Expressetikett"

End If

 

If intForsandelseVikt > 0 And intForsandelseVikt <= 20 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "1:a klass brev" Then intPorto = 6

If intForsandelseVikt > 20 And intForsandelseVikt <= 50 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "1:a klass brev" Then intPorto = 12

If intForsandelseVikt > 50 And intForsandelseVikt <= 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "1:a klass brev" Then intPorto = 14

If intForsandelseVikt > 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "1:a klass brev" Then intPorto = 22

If strForsandelseVar = "Utrikes" And strTypAvForsandelse = "1:a klass brev" Then

MsgBox "Ditt porto blir " & intPorto & "." & " Märk din försändelse med Prioritaire"

End If

 

If intForsandelseVikt > 0 And intForsandelseVikt <= 20 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 5

If intForsandelseVikt > 20 And intForsandelseVikt <= 50 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 10

If intForsandelseVikt > 50 And intForsandelseVikt <= 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 12

If intForsandelseVikt > 100 And strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Ekonomibrev" Then intPorto = 18

If strForsandelseVar = "Utrikes" And strTypAvForsandelse = "Ekonomibrev" Then

MsgBox "Ditt porto blir " & intPorto & "." & " Märk din försändelse med B Ekonomibrev"

End If

End Sub

 

 

 

///LG

 

Link to comment
Share on other sites

Tack så hemskt mkt för all hjälp LG. Sista förslaget fungerade ypperligt. Det var End if som jag missat samt några And som även 0x2A påpekade.

 

Jag tackar åter igen!

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...