Avatar billede jaffafo Nybegynder
18. oktober 2005 - 14:54 Der er 10 kommentarer

Tjekke om dataset og XMLdocument er tomt

Hej

jeg har denne kode:

if not XMLdata is nothing
dgKlub.datasource = XMLdata
dgKlub.databind()
else
response.write("XMLdata tom")
end if
           
If not myXML is nothing
dgtest.DataSource = nlToDt(myXml.SelectNodes("//spillere/*"))
dgtest.DataBind()
else
response.write("myXML tom")
end if

Men det virker ikke og aner ikke hvordan jeg ellers skal lave det.

Hilfe!
Avatar billede jokkejensen Novice
18. oktober 2005 - 15:44 #1
er det ikke noget ala :
            if(xmlDoc.HasChildNodes) // til xml
           
            if (ds.Table[0].Rows.Count != 0) // til dataset

Dine validerer vel altid sand ?
Avatar billede jaffafo Nybegynder
18. oktober 2005 - 17:22 #2
Jeg har prøvet med denne kode nu, men jeg får stadig altid valideret sandt :(
Min response.write giver altid "Rows: 1" ligemeget om der er noget i datasettet eller ej :/

if XMLData.Tables(0).Rows.Count > 0
    response.write("Rows:" & XMLData.Tables(0).Rows.Count)
    dgKlub.datasource = XMLdata
    dgKlub.databind()
else
    lblfejl.visible = true
    lblfejl.text = "Klubben kan ikke findes"
end if


Denne kode giver "ja" hvis der er noget, men hvis der ikke er noget får jeg ikke engang et "nej" :/

If myXML.HasChildNodes
    Response.write("ja")
    dgtest.DataSource = nlToDt(myXml.SelectNodes("//spillere/*"))
    dgtest.DataBind()
else
    Response.write("nej")
    dgtest.DataSource = nothing
    dgtest.DataBind()
end if
Avatar billede jokkejensen Novice
18. oktober 2005 - 21:42 #3
Den med XML er jeg lidt i tvivl om er korrekt.. Men jeg kan ikke se hvordan antal rækker i en tabel der ikke eksisterer ikke skulle være 0..

prøv lige at udskrive første række i det datatable...
Avatar billede jaffafo Nybegynder
18. oktober 2005 - 22:44 #4
Nu kører jeg denne kode:

    Private Sub PrintRows(myDataSet As DataSet)
        ' For each table in the DataSet, print the values of each row.
        Dim thisTable As DataTable
        For Each thisTable In  myDataSet.Tables
            ' For each row, print the values of each column.
            Dim myRow As DataRow
            For Each myRow In  thisTable.Rows
                Dim myCol As DataColumn
                For Each myCol In  thisTable.Columns
                    response.write(myRow(myCol))
                Next myCol
            Next myRow
        Next thisTable
    End Sub

I begge tilfælder skriver den "rows: 1" men kun når ID'en eksisterer på serveren skriver den indholdet af XMLdata. Så jeg forstår det ikke helt.
Avatar billede jokkejensen Novice
19. oktober 2005 - 08:58 #5
Da du før spurgte om "if not XMLdata is nothing" viste den vel sandt fordi XMLdata er et dataset...

Men jeg kan sku ikke lige se hvorfor den skulle findes en række i et dataset der er tomt..

http://www.daniweb.com/techtalkforums/thread23726.html

Der gøres det på samme måde, dog chekker de også om det er "nothing"

Mvh
Avatar billede jaffafo Nybegynder
19. oktober 2005 - 14:25 #6
Jeg prøver lige at formulere det anderledes:

Jeg sender et ID til denne url hvor jeg så får en XML tilbage.

Hvis id'en findes får jeg en udfyldt XML, men hvis ID'en ikke findes får jeg en XML som den her:

<?xml version="1.0" encoding="iso-8859-1" ?>
- <doc>
- <klub>
  <klub_id />
  <klubnavn />
  <stadionnavn />
  <spillere />
  </klub>
  </doc>

Mit spørgsmål er så:

hvordan kan jeg tjekke om der er noget indhold i XML'en. :)
Avatar billede jokkejensen Novice
19. oktober 2005 - 20:44 #7
Ikke underligt der er nodes i dit xml så..

Jeg kender ikke til hvordan det normalt skal se ud..

Men krydstjek da om klubÍD er lig med det det ID som du efterspørger..
Avatar billede jaffafo Nybegynder
20. oktober 2005 - 04:18 #8
Du kan vel ikke lige smide et lille eksempel? :)
Avatar billede jaffafo Nybegynder
20. oktober 2005 - 04:51 #9
Jeg har løst problemet nu :)

Jeg kører en tets på datasettet med denne function:

Private function GetRowsByFilter(d as dataset)
Dim t As DataTable
t = d.Tables("klub")

Dim strExpr As String
strExpr = "klub_id <> '0'"
Dim foundRows() As DataRow

foundRows = t.Select(strExpr)
Dim i As Integer

For i = 0 to foundRows.GetUpperBound(0)
  return (foundRows(i)(0))
Next i
End function

Den svarer så enten med en tom string eller med en ID alt efter om ID'en findes.. :)  så smider du lige et svar :)
Avatar billede jaffafo Nybegynder
10. februar 2006 - 20:07 #10
kommer svaret snart? :)
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