Ciao,devo costruire per il mio capo un'applicazione che mi genera la rotta stradale tra 2 punti;
mi è stato suggerito di guardare Routing in virtual earth web service e sono partito da li.
Poi mi è stato detto che sul database aziendale ci sono tabelle relative ai nostri fornitori e come vedete ho popolato un dataset per mettere i nostri punti vendita.
Sembrava andasse tutto bene quando all'esecuzione del codice(Dim MyRouteServiceClient As New ServiceReference1.RouteServiceClient) MI GENERA Sysyem.InvalidOperationException, ho guardato un po in giro e ho letto che probabilmente il mio servizio è esposto su più binding ma dopo aver controllato il binding che faccio è unico.
Di seguito vi mostro quello che ho fatto:
C'è qualcuno che può dirmi dove sbaglio oppure come risolvere questo errore?codice:Imports Prog_rotte.ServiceReference1 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim conn As New SqlClient.SqlConnection conn.ConnectionString = "Data Source=PC-STATION27;Initial Catalog=TXT2010;User Id=sa;Password=XXXX;" conn.Open() Dim t As New DataTable Dim sql As String = "select g.I,g.LAT,g.LON from CLIENTI c inner join GEOPDV g on g.I=c.i" Dim ad As New SqlClient.SqlDataAdapter(sql, conn) ad.Fill(t) ad.Dispose() conn.Close() DataGridView1.DataSource = t MsgBox((t.Rows).Count()) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim conn As New SqlClient.SqlConnection conn.ConnectionString = "Data Source=PC-STATION27;Initial Catalog=TXT2010;User Id=sa;Password=xxxx;" conn.Open() Dim t1 As New DataTable Dim sql As String = "select g.I,g.LAT,g.LON from CLIENTI c inner join GEOPDV g on g.I=c.i " Dim ad As New SqlClient.SqlDataAdapter(sql, conn) ad.Fill(t1) ad.Dispose() conn.Close() Dim lpdv As New List(Of objPdv) For i As Int32 = 0 To t1.Rows.Count - 1 For c As Int32 = i + 1 To t1.Rows.Count - 1 Dim ob As New objPdv ob.pdvstart = t1.Rows(i)("i") ob._pdvstop = t1.Rows(c)("i") ob._lats = t1.Rows(i)("lat") ob._latd = t1.Rows(c)("lat") ob._lons = t1.Rows(i)("lon") ob._lond = t1.Rows(c)("lon") lpdv.Add(ob) 'istanzio RouteRequest su ws Dim ws As New ServiceReference1.RouteRequest 'istanzio Location su routeservice Dim routeservice As New ServiceReference1.Location 'istanzio Credential su cr Dim cr As New ServiceReference1.Credentials'=NewNet.NetworkCredential("magician@posta.it", "lemac_token") cr.Token = "AoWTCRsPpF_wnaqvIclWhL3sSjUKgRhSpaxiA-hyyWmnNApYMuWpHXd02iUph8mY" ws.Credentials = cr Dim waypoints As ServiceReference1.Waypoint() = New ServiceReference1.Waypoint(2){} waypoints(0) = New ServiceReference1.Waypoint() waypoints(0).Location = New ServiceReference1.Location() waypoints(0).Location.Latitude = (t1.Rows(i)("lat")) waypoints(0).Location.Longitude = (t1.Rows(i)("lon")) waypoints(1) = New ServiceReference1.Waypoint() waypoints(1).Location = New ServiceReference1.Location() waypoints(1).Location.Latitude = (t1.Rows(c)("lat")) waypoints(1).Location.Longitude = (t1.Rows(c)("lon")) ws.Waypoints = waypoints Dim myrouteop As New ServiceReference1.RouteOptions myrouteop.Mode = ServiceReference1.TravelMode.Driving myrouteop.Optimization = ServiceReference1.RouteOptimization.MinimizeTime myrouteop.TrafficUsage = ServiceReference1.TrafficUsage.None ws.Options = myrouteop 'qua da errore[/COLOR] Dim MyRouteServiceClient As New ServiceReference1.RouteServiceClient Dim myRouteResponse As New ServiceReference1.RouteResponse myRouteResponse = MyRouteServiceClient.CalculateRoute(ws) Dim myRouteLeg As New ServiceReference1.RouteLeg Dim directions As String = "" MsgBox(myRouteResponse.Result.Legs.Length) Dim t2 As New DataTable t2.Rows.Add(DataRow) tCell0.Text = "" For q As Int32 = 0 To q < (myRouteResponse.Result.Legs.Length) myRouteLeg = myRouteResponse.Result.Legs[q] For p As Int32 = 0 To p < (myRouteLeg.Itinerary.Length) directions = directions + myRouteLeg.Itinerary[p].Text '+ " (" + Math.Round(myRouteLeg.Itinerary[p].Summary.Distance, 2) + " kilometres, " '+ (myRouteLeg.Itinerary[p].Summary.TimeInSeconds / 60) + "mins)" 'tCell0.Text += directions Next Next MsgBox(lpdv.Count) DataGridView2.DataSource = lpdv End Sub End Class Public Class objPdv Dim _pdvstart As String Public _pdvstop As String Public _lats As Decimal Public _lons As Decimal Public _latd As Decimal Public _lond As Decimal Public Property pdvstart() As String Get Return _pdvstart End Get Set(ByVal value As String) _pdvstart = value End Set End Property End Class
Grazie mille in anticipo

Rispondi quotando