05. november 2007 - 23:48Der er
15 kommentarer og 1 løsning
Kontakt til dataset giver ingen synlige resultater
Jeg har et projekt der kobler op til en webservice og uploader et dataset. En vellykket kontakt til webservicen skulle returnere et resultat-datasæt, men bortset fra det har jeg ikke nogen adgang til at redigere i webservicen. Programmet køres uden fejlmeddelelser, men jeg får ikke rigtig noget resultat af det og dataene bliver ikke uploaded.
Hvad mangler jeg mon?
Koden:
Imports WindowsApplication1.xx.www Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim myDataSet As System.Data.DataSet = minfunktion() Me.Visible = False Dim myservice As New XX_ListFunctions() Dim temp = myservice.XX_MasseUpdate("wsXX-nyheder", "kode", myDataSet) End Sub
Public Function minfunktion() As System.Data.DataSet Dim csvPath As String = "c:\testkommasep.txt"
Dim myDataSet As System.Data.DataSet = New System.Data.DataSet()
Dim myDataTable As System.Data.DataTable = New System.Data.DataTable("XXXTabel")
Using sr As System.IO.StreamReader = New System.IO.StreamReader(csvPath) Dim line As String
Do line = sr.ReadLine() Dim lineArr As String() = line.Split(",")
Dim myDataRow As System.Data.DataRow = myDataTable.NewRow() myDataRow("KOLONNE1") = lineArr(0) myDataRow("KOLONNE2") = lineArr(1) myDataTable.Rows.Add(myDataRow) Loop Until Not line Is Nothing
End Using myDataSet.Tables.Add(myDataTable) dinfunktion = myDataSet End Function End Class
Alt ser da fint ud, på nær dit loop-stop kriterium:
Loop Until Not line Is Nothing
Så vidt jeg kan regne ud, så må den da stoppe efter første linje... og hvis man fjerner "not", så vil den da sikkert gå ned med et brag på sidste linje:)
While (Not stream.EndOfStream) ' read the line and split it using ',' as the delimiter Dim myLine As String = stream.ReadLine() 'bla bla
End While
eller, alternativt, bruge OleDb-tingesten som kan læse en csv-fil direkte
Dim myCon As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Websites\Roster\Uploads\;Extended Properties='text;HDR=Yes;FMT=Delimited'") Dim myTable As New DataTable Dim myCommand As New OleDb.OleDbCommand("SELECT * FROM " + "myData.csv", myCon) Dim myAdapter As New OleDb.OleDbDataAdapter(myCommand) myCon.Open() myAdapter.Fill(MyTable) myCon.Close()
Der er nu heller ikke noget i koden, som skulle gøre sig synlige udslag; du opbygger dit dataset og sender det vidre til myservice.XX_MasseUpdate(...) og det er så dét. Med mindre at XX_MasseUpdate() i sig selv skulle gøre noget synligt? Det er svært at bedømme på navnet alene, men det lyder mest som om at denne opdatere noget i en database et eller andet sted. Har du kigget i denne database for at se om der er sket noget i den?
Faktisk burde ikke en gang din form være synlig? Du sltter da i hvert fald dens Cisible property til False.
Tak for inputtene, men tja - det virker nu stadig ikke rigtig. Når jeg indsætter et break point kan jeg se at der under temp står at "cast from string "XXX" to type 'Double' is not valid. Er det fordi webservicen forventer en anden type data, og hvordan kan jeg i så fald lave den om?
Jep, jeg havde lavet en kodefejl (datasættet blev genereret med linjer der gik igen og datatypen blev derfor forkert) og problemet blev løst lige efter min forrige post. Smid gerne et svar for den gode indsats. (Nielle og Neoman, kan jeg give jer begge point?)
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.