Avatar billede eqvaliser Nybegynder
04. maj 2003 - 15:04 Der er 16 kommentarer og
3 løsninger

If, else End if funktion ???????

Har en helvedes lang if sætnings kolonne.
som ikke virker optimalt.

altså har nogle emailUrls. player1email, player2email osv
op til 16 stk.

så skal je have sat dem sammen, med komma imellem, således
de alle kommer i samme linie,. så jeg kan maile.

men det er ikke dem alle som der står email i.
dvs de er blanke.
så der skal jo ikke sættes komma.

jeg har prøvet 2 løsninger, som jeg ikke er tilfreds med.

******** Løsning 1 ******************** (en gang lordt)
Dim allmembersemail As String
allmembersemail = ""
allmembersemail = player1email & ","
allmembersemail = allmembersemail & player2email & ","
allmembersemail = allmembersemail & player3email & ","
allmembersemail = allmembersemail & player4email & ","
allmembersemail = allmembersemail & player5email & ","
allmembersemail = allmembersemail & player6email & ","
allmembersemail = allmembersemail & player7email & ","
allmembersemail = allmembersemail & player8email & ","
allmembersemail = allmembersemail & player9email & ","
allmembersemail = allmembersemail & player10email & ","
allmembersemail = allmembersemail & player11email & ","
allmembersemail = allmembersemail & player12email & ","
allmembersemail = allmembersemail & player13email & ","
allmembersemail = allmembersemail & player14email & ","
allmembersemail = allmembersemail & player15email & ","
allmembersemail = allmembersemail & player16email & ","

PRoblemet med denne er at den tilføjer ',' komma også ved tom email.

******************************** Løsning 2 ************
Dim allmembersemail As String
allmembersmail = ""
  If player1email = "" Then
    Else
    allmembersemail = player1email
    If player2email = "" Then
        Else
        allmembersemail = allmembersemail & "," & player2email
        If player3email = "" Then
          Else
          allmembersemail = allmembersemail & "," & player3email
          If player4email = "" Then
              Else
              allmembersemail = allmembersemail & "," & player4email
              If player5email = "" Then
                Else
                allmembersemail = allmembersemail & "," & player5email
              End If
          End If
        End If
    End If
  End If
    If player6email = "" Then
    Else
    allmembersemail = allmembersemail & "," & player6email
    If player7email = "" Then
        Else
        allmembersemail = allmembersemail & "," & player7email
        If player8email = "" Then
          Else
          allmembersemail = allmembersemail & "," & player8email
          If player9email = "" Then
              Else
              allmembersemail = allmembersemail & "," & player9email
              If player10email = "" Then
                Else
                allmembersemail = allmembersemail & "," & player10email
              End If
          End If
        End If
    End If
  End If
      If player11email = "" Then
    Else
    allmembersemail = allmembersemail & "," & player11email
    If player12email = "" Then
        Else
        allmembersemail = allmembersemail & "," & player12email
        If player13email = "" Then
          Else
          allmembersemail = allmembersemail & "," & player13email
          If player14email = "" Then
              Else
              allmembersemail = allmembersemail & "," & player14email
              If player15email = "" Then
                Else
                allmembersemail = allmembersemail & "," & player15email
                If player16email = "" Then
                    Else
                    allmembersemail = allmembersemail & "," & player16email
                End If
              End If
          End If
        End If
    End If
  End If



-------------------------------------------
Nogen der har en mere holbar lsøning ?
Avatar billede arne_v Ekspert
04. maj 2003 - 15:09 #1
Jeg er ikke den store VB guru, men var det ikke en ide at lave
array og bruge en løkke til at appende med ?
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 15:10 #2
Ja, med udgangspunkt i den første

allmembersemail = ""
if player1email<>"" then
  allmembersemail = allmembersemail & player1email & ","
end if
if player2email<>"" then
  allmembersemail = allmembersemail & player2email & ","
end if
...osv...

kan du selv fjerne det sidste komma, når vi når ned til bunden?
Avatar billede roenving Novice
04. maj 2003 - 15:25 #3
Men hvis du kan finde ud af at bruge arne_v's er det en meget mere elegant løsning, som også er mere fleksibel ... :-)
Avatar billede roenving Novice
04. maj 2003 - 15:27 #4
-- og så kan du understøtte den ved at navngive i et array, jeg kan ikke lige VB's konventioner på dette punkt, men noget à la:

dim players(16)
players(1).navn = "Spiller1"
players(1).email = "Spiller1@kjhk.dk"

osv
Avatar billede tuctoh Nybegynder
04. maj 2003 - 15:30 #5
Dim allmembersemail As String
allmembersemail = ""
allmembersemail = player1email & ","
allmembersemail = allmembersemail & player2email & ","
allmembersemail = allmembersemail & player3email & ","
allmembersemail = allmembersemail & player4email & ","
allmembersemail = allmembersemail & player5email & ","
allmembersemail = allmembersemail & player6email & ","
allmembersemail = allmembersemail & player7email & ","
allmembersemail = allmembersemail & player8email & ","
allmembersemail = allmembersemail & player9email & ","
allmembersemail = allmembersemail & player10email & ","
allmembersemail = allmembersemail & player11email & ","
allmembersemail = allmembersemail & player12email & ","
allmembersemail = allmembersemail & player13email & ","
allmembersemail = allmembersemail & player14email & ","
allmembersemail = allmembersemail & player15email & ","
allmembersemail = allmembersemail & player16email & ","
do while instr(1, allmembersemail, ",,") => 1
allmembersemail = replace(allmembersemail, ",,", ",")
loop


prøv dette engang... burde løse det.
Avatar billede eqvaliser Nybegynder
04. maj 2003 - 15:37 #6
men muligheden er jo også at der kun er 5 spillere.
dvs.

at der bliver tilføjet for mange ',' kommaer.

og det giver fejl i .Send (email)

så hvis player5email fks er tom, så skal der ikke tilføjes et komma.
det er nu lidt inviklet.  lol
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 15:38 #7
tuctoh: så er der måske et komma først, og et komma til
sidst, som ikke fanges af ",,"
Avatar billede tuctoh Nybegynder
04. maj 2003 - 15:38 #8
det er netop det min gør eqv. Den sørger for at fjerne de dobbelte kommaer.
Avatar billede tuctoh Nybegynder
04. maj 2003 - 15:51 #9
ajj, det kan også nemt ændres...

if left(allmembersemail, 1) = "," then  allmembersemail = right(allmembersemail, (len(allmembersemail)-1))
if right(allmembersemail, 1) = "," then  allmembersemail = left(allmembersemail, (len(allmembersemail)-1))

bare smid de to linier bagi koden.
Avatar billede arne_v Ekspert
04. maj 2003 - 16:02 #10
Hvor svært kan det være at gøre det med et array ?

Eksempel:

Function demo()
  Dim a(4) As String
  Dim list As String
  a(1) = "123"
  a(2) = ""
  a(3) = "456"
  a(4) = ""
  list = ""
  For i = 1 To 4
      If Len(a(i)) > 0 Then
          If Len(list) > 0 Then list = list + ","
          list = list + a(i)
      End If
  Next i
  MsgBox list
End Function
Avatar billede tuctoh Nybegynder
04. maj 2003 - 16:16 #11
tjaa, men det andet fylder nu noget mindre i koden arne... og vil også være noget nemmere at gennemskue vil jeg tro.
Avatar billede arne_v Ekspert
04. maj 2003 - 16:20 #12
Mindre i kode ????

Jeg har ikke set nogen eksempler hidtil på under 8 linier kode !

[ovenstående er et køreklart eksempel - ikke kun funktionaliteten]
Avatar billede tuctoh Nybegynder
04. maj 2003 - 16:30 #13
øhh arne,
a(1) = "123"
  a(2) = ""
  a(3) = "456"
  a(4) = ""

skal udvides til 16 linier alene, da alle variablerne skal gemmes i din array...
Avatar billede eqvaliser Nybegynder
04. maj 2003 - 16:31 #14
arne_V >

Mit problem er så, jeg er ikke specielt stolt af arrays.
og bruger dem ikke pga. min uvidenhed om dem.

Men korrekt, ja er nok meget nemt, med arrays,
men kan bare ikke.. :-(
Avatar billede arne_v Ekspert
04. maj 2003 - 16:33 #15
tuctoh>

Man skal ikke lave et array og assigne de 16 skalarer. Man skal
lave et array og assigne værdier der hvor de 16 skalarer får
værdier.
Avatar billede arne_v Ekspert
04. maj 2003 - 16:35 #16
equaliser>

Hvis du ikke har mod på arrays, så vælger du bare en ikke-array
løsning.

Jeg ville bare lige bringe ideen på bane.
Avatar billede eqvaliser Nybegynder
04. maj 2003 - 16:47 #17
Brugte Tuctoh's kode som hjælp. takker.

har nu et nyt problem..  damn..  ny post. runtime error 32014
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 16:50 #18
Unknown Recipient  ?? Skal der komma eller semikolon imellem?
Avatar billede eqvaliser Nybegynder
04. maj 2003 - 17:04 #19
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
Kurser inden for grundlæggende programmering

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