Προς το περιεχόμενο

VB.NET + Subset από Dataset


Harkon

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σας,

 

έχω κάνει Populate ένα dataset με δεδομένα από μία βάση και επιθυμώ να περάσω το dataset αυτό ως όρισμα σε μια webmethod ενός απομακρυσμένου webservice.

Επειδή όμως κάποιες φορές το dataset είναι αρκετά μεγάλο δέχομαι timeout error. Σκέφτηκα λοιπόν αντί να κάνω πολλαπλά ερωτήματα στην βάση για να παίρνω κάθε φορά Χ εγγραφές, να πάρω υποσύνολα του dataset. Υπάρχει κάποιος τρόπος; γενικά είναι καλύτερο αυτό που πάω να κάνω ή θα μπλέξω χειρότερα; κι επίσης με ποιο κριτήριο να χωρίσω το τις εγγραφές και να πάρω αυτές τις Χ κάθε φορά; πχ έχω δει πως οι 500 εγγραφές δεν αποτυγχάνουν αλλά είναι ασφαλές συμπέρασμα αυτό ή πάλι θα υπάρχει κάποιο ρίσκο;

σας ευχαριστώ.

 

>
[size=2][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] sql [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]String[/color][/size][size=2] = [/size][size=2][color=#800000]"SELECT * from [/color][/size][size=2][color=#800000].Material"
[/color][/size][size=2]
[/size][size=2][color=#0000ff]
[/color][/size][size=2][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] cmd [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]New[/color][/size][size=2] SqlCommand(sql, cnSource) 

[/size][size=2][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] adapter [/size][size=2][color=#0000ff]As[/color][/size][size=2] SqlDataAdapter
adapter = [/size][size=2][color=#0000ff]New[/color][/size][size=2] SqlDataAdapter(cmd)
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] dSet [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]New[/color][/size][size=2] DataSet
adapter.Fill(dSet)
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] result [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]String
[/color][/size][size=2]
[/size][size=2][color=#008000]
[/color][/size][size=2][/size][size=2][color=#0000ff]If[/color][/size][size=2] dSet.Tables(0).Rows.Count > 0 [/size][size=2][color=#0000ff]Then 

[/color][/size][size=2][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] ws [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]New[/color][/size][size=2] SynchWebService.Service
result = ws.InsertMaterial(dSet) ''εδω παιρνω το timeout όταν είναι πολλές οι εγγραφές
[/size][size=2][color=#0000ff]Else
[/color][/size][size=2]result = [/size][size=2][color=#800000]"No material found"
[/color][/size][size=2][/size][size=2][color=#0000ff]End[/color][/size][size=2] [/size][size=2][color=#0000ff]If
[/color][/size][size=2]adapter.Dispose()
cnSource.Dispose()
[/size]

 

παραθέτω κομμάτι του κώδικα:

Δημοσ.

να πω την αλήθεια όχι, θα το δοκιμάσω σήμερα

κάτι δοκιμάζω πάντως με την filter για να παίρνω range εγγραφών.

θα ποστάρω πίσω για νεότερα,

σε ευχαριστώ πολύ για την απάντησή σου πάντως

Δημοσ.

χμμ :rolleyes: να πω και εγώ την ιδέα μου?

 

Γιατί δεν δοκιμάζεις μέσα από το Query σου να επιλέξεις τις top 500 εγγραφές (αφού εκεί δεν έχεις πρόβλημα) και να το βάλεις σε ένα loop όσο έχεις στο dataset rowcount>0

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...