Avatar billede torotune Nybegynder
03. juni 2005 - 13:04 Der er 13 kommentarer og
1 løsning

Hvis kolonne er tom - then brug standard

Hej, kan ikke lige helt få dette til at virke. - Hvis min email-kolonne er tom, brug standard-mail:

(Jeg fandt et forslag til første linie i et andet spørgsmål)

If Len("" & objDataReader("Email")) = 0 then 
  Then
    modtager = "minmail@mail.dk"           
  Else modtager = objDataReader("Email")   
End if

Men jeg får en: "No data exists for the row/column."
Avatar billede Slettet bruger
03. juni 2005 - 13:15 #1
Sådan noget ligende:

If(not objDataReader.IsDbNull("Email")) then
  modtager = objDataReader.GetString("Email")
  if( 0 = len(modtager) then
    modtager = "minmail@mail.dk"

  end if
else
modtager = "minmail@mail.dk"
end if
Avatar billede torotune Nybegynder
03. juni 2005 - 14:08 #2
Jeg får en "Input string was not in a correct format. "

ved: "If not objDataReader.IsDbNull("Email") then"
Avatar billede burningice Nybegynder
03. juni 2005 - 15:21 #3
hvordan ser din sql-query ud som du bruger til at hente dine data?
Avatar billede torotune Nybegynder
03. juni 2005 - 15:32 #4
Den er således:

strSQL = "SELECT navn, email FROM bruger;"

  objComm = New OleDbCommand(strSQL, objConn)
  objDataReader = objComm.ExecuteReader()

(Jeg bruger "navn" senere)
Avatar billede nielle Nybegynder
03. juni 2005 - 22:49 #5
If (not objDataReader.IsDbNull(1)) Then
    modtager = objDataReader.GetString(1)
    If (len(modtager) = 0) Then
        modtager = "minmail@mail.dk"
    End If
Else
    modtager = "minmail@mail.dk"
End If
Avatar billede nielle Nybegynder
03. juni 2005 - 22:56 #6
... eller:

If (Not objDataReader.IsDbNull(1)) Then
    modtager = objDataReader.GetString(1).Trim()
    If (Len(modtager) = 0) Then
        modtager = "minmail@mail.dk"
    End If
Else
    modtager = "minmail@mail.dk"
End If

Din søjle "navn" har indeks 0 og din søjle "email" har indeks 1 - derfor GetString(1). Hvis du ikke lige har den luksus at kunne tælle dig frem, og derfor ikke ved hvilket indeks "email" ligger på, kan dette fås med:

indeks = objDataReader.GetOrdinal("email")
Avatar billede torotune Nybegynder
04. juni 2005 - 15:26 #7
Hmm... jeg kan ikke helt få det til at virke, men jeg har også glemt at sige, at jeg kører det på denne måde:

Sub

strSQL = "SELECT navn, email FROM bruger;"

  objComm = New OleDbCommand(strSQL, objConn)
  objDataReader = objComm.ExecuteReader()

    Do while objDataReader.Read = true

    modtager = objDataReader.("email") 

      **' mailscript ***

    Loop

  objDataReader.Close()
End sub

Jeg kan ikke få den til at fange, hvis mail-søjlen er tom - heller ikke ved

If modtager = "" Then
    response.write("Mail er tom")
  exit sub
End if

Hvad gør jeg mon galt?
Avatar billede torotune Nybegynder
04. juni 2005 - 15:28 #8
Hov - der skulle selvfølgelig stå

'modtager = objDataReader("email")'
Avatar billede torotune Nybegynder
04. juni 2005 - 20:19 #9
Jeg smider lige lidt flere points, fordi jeg fik det formuleret forkert, og da den virkelig irriterer mig denne her :-)
Avatar billede nielle Nybegynder
05. juni 2005 - 08:16 #10
Du har postet dit spørgsmål i ASP.NET gruppen - men din kodestump er ASP. ASP og ASP.NET er *ikke* det samme. Er du helt sikker på at det vitterligt er ASP.NET og ikke ASP du arbejder med?
Avatar billede torotune Nybegynder
05. juni 2005 - 13:23 #11
ASP.NET - Det er svært at poste det hele, da jeg så skal pille mine CodeBehind-filer helt fra hinanden. Men jeg kan bryde det ned til dette eksempel:

<%@ Page Language="VB" Debug="true" %>
<script runat="server">

    Dim modtager as String
   
    Sub btnAfsend_Click(sender As Object, e As EventArgs)
   
    OpenDatabase("brugerdb.mdb")
   
    strSQL = "SELECT navn, email FROM bruger;"
   
      objComm = New OleDbCommand(strSQL, objConn)
      objDataReader = objComm.ExecuteReader()
     
            ' Tjek om "email" er tom, cirka heromkring!'
            ' Hvis den er, så hop videre til en anden Sub,
            ' inden mailscriptet eksekveres.
   
        Do while objDataReader.Read = true
   
        modtager = objDataReader("email")
   
            '*** mailscript ***
   
        Loop
   
      objDataReader.Close()
    CloseDatabase("brugerdb.mdb")
   
    End sub

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <asp:Button id="btnAfsend" onclick="btnAfsend_Click" runat="server" Text="Afsend mail!"></asp:Button>     
    </form>
</body>
</html>
Avatar billede nielle Nybegynder
05. juni 2005 - 22:17 #12
Siden at det er ASP.NET så hedder det ikke:

modtager = objDataReader("email")

- mere. Faktisk burde det slet ikke kunne kompilere?

I stedet for tilgår man felterne via index. Da din SQL selecter på "navn, email" så er navn index 0 og email index 1:

modtager = objDataReader.GetString(1)

Endvidere bør man altid teste med objDataReader.IsDBNull(1) først idet GetString(1) vil smide en exception hvis man bruger den på et felt med værdien NULL.

Den centrale loop skal derfor se sådan her ud:

Do while objDataReader.Read = true
    If objDataReader.IsDBNull(1) Then
        modtager = "minmail@mail.dk"
    Else
        if objDataReader.GetString(1).Trim() = "" Then
            modtager = "minmail@mail.dk"
        Else
            modtager = objDataReader("email")
        End If
    End If
   
    '*** mailscript ***
Loop
Avatar billede torotune Nybegynder
11. juni 2005 - 21:17 #13
okay, takker! Jeg finder ud af det. Læg et svar for den fine hjælp :-)
Avatar billede nielle Nybegynder
12. juni 2005 - 19:09 #14
Svar :^)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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