Avatar billede spurn Nybegynder
11. september 2002 - 10:52 Der er 15 kommentarer og
1 løsning

fylde et dataset ind i et andet dataset VB.NET

Dim s As New Stack()
Dim h_DataSet As DataSet = New DataSet()

Situation er at jeg har en stack hvor jeg gemmer nogle datasets på som jeg senere skal bruge. Problemet er når jeg skal til at anvende dem igen.

Hvis jeg kører en s.Peek().GetType()

udskriver at det er et System.Data.DataSet som ligger der, så det er ikke det som skulle være problemet

jeg vil så gerne have sat datasettet på stakken smid ind i h_DataSet og bruger følgende syntax

h_DataSet = s.Peek()

hvis jeg så prøver at arbejde på h_DataSet herefter får jeg følgende fejl.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

// håber nogle af jer kender syntaxen for det
Avatar billede odegaard Nybegynder
11. september 2002 - 10:57 #1
hvordan prøver du at arbejde på h_dataset ? Indeholder h_dataset noget ?
Avatar billede spurn Nybegynder
11. september 2002 - 11:01 #2
nej h_datasettet indeholder ikke noget.

h_DataSet.Tables("Kategori").Rows.Count())

dette er hvad jeg prøver at lave
Avatar billede spurn Nybegynder
11. september 2002 - 11:02 #3
problemet er at jeg på en måde skal have lavet en instans af det dataset som kommer ud fra stakken(tror jeg)

men hvis jeg eks siger

h_DataSet = New DataSet(s.Peek())

får jeg fejlen

Cast from type 'DataSet' to type 'String' is not valid.
Avatar billede odegaard Nybegynder
11. september 2002 - 11:31 #4
det må være fordi s.Peek() ikke returnerer en streng.
Erklæring er et dataset sker ved 'Public Sub New(String)'
Dvs. du kan ikke smide s.Peek (som er af typen object) ind et sted hvor der forventes en streng !
Avatar billede spurn Nybegynder
11. september 2002 - 11:37 #5
Nej så meget er jeg også kommet frem til, det var også mest bare for at vise hvad det er som jeg gerne vil have lavet, men jeg kender som sagt ikke syntaxen til det.

det jeg gerne vil er at få det object(dataset) som ligger på stacken til at være det nye h_DataSet.
Avatar billede jakobandersen Nybegynder
11. september 2002 - 12:54 #6
Det du får ud af din stack er godt nok et DataSet men når du bruger peek returneres resultatet blot af typen object derfor skal du gøre sådan her:

h_DataSet = (DataSet)s.Peek()

Så skulle det spille
Avatar billede odegaard Nybegynder
11. september 2002 - 16:30 #7
Kan man det, når det ikke er C# ?
Så vidt jeg ved, så hedder det i VB.NET :
h_DataSet = CType(s.Peek(), System.Data.DataSet)

...ifølge Quickstarten under casting:
http://localhost/QuickStart/howto/default.aspx?url=/quickstart/howto/doc/languages.aspx
Avatar billede spurn Nybegynder
11. september 2002 - 16:47 #8
tak for svaret, har ikke testet det endnu da jeg ikke sidder hjemme nu, men så vidt jeg kan se har du fuldstændig ret.
Avatar billede jakobandersen Nybegynder
11. september 2002 - 17:04 #9
odegaard>> Du har ganske ret, nu tænker jeg ikke lige så meget i VB.NET så det er godt du kan stå for oversætningen :-)
Avatar billede jakobandersen Nybegynder
11. september 2002 - 17:05 #10
Og så haler du sørme også ind på mig nu ;-)
Avatar billede odegaard Nybegynder
11. september 2002 - 17:32 #11
Hvad søren ??? Fik jeg alle pointene? Det kan du sgu ikke være bekendt. Moonduck kom nu med de ledende svar.

Nå men jeg må også videre med at lære C# syntax. Det er sgu lidt hurtigere at skrive :-)
Avatar billede z42cool Nybegynder
11. september 2002 - 20:37 #12
h_DataSet giver en NullReference execption så er det vel næppe fordi det ikke er den rigtige type, men fordi det ikke peger på noget! Hvis s.Peek returnerer et object er det rigtigt at det skal castes, men så vil _DataSet = s.Peek() give en kompiler fejl fordi _Dataset er typedefineret til Dataset og man prøver at stoppe et object derind! Umiddelbart vil jeg ikke tro at det er castningen der er problemet, det ser for mig at se ud som om der ikke bliver returneret noget fra s.Peek!
Avatar billede jakobandersen Nybegynder
11. september 2002 - 20:59 #13
z42cool> Jeg er rimelig overbevist om at den NullReference exeption kommer et andet sted fra(jeg må nok indrømme at jeg ikke lige læste spørgsmålet så grundigt, jeg gik bare ud fra at det var cast problemer), prøv evt. at leg med disse 2:

using System;
using System.Data;
using System.Collections;
class StackDemo{
    public StackDemo(){
        DataSet objDataSet = new DataSet();
        Stack s = new Stack(3);
        s.Push(objDataSet);
        objDataSet = s.Peek();
        Console.WriteLine(objDataSet.Tables.Count);
    }
    static void Main(){
                new StackDemo();
        }
}

Og så:

using System;
using System.Data;
using System.Collections;

class StackDemo{
    public StackDemo(){
        DataSet objDataSet = new DataSet();
        Stack s = new Stack(3);
        s.Push(objDataSet);
        objDataSet = (DataSet)s.Peek();
        Console.WriteLine(objDataSet.Tables.Count);
    }
    static void Main(){
                new StackDemo();
    }
}
Avatar billede z42cool Nybegynder
11. september 2002 - 22:25 #14
moonduck>> Gider ikke lige kompilere det, men umiddelbart giver 1. eksempel en kompileringsfejl i retning af kan ikke implicit caste object til Dataset. Det der undrer mig er, at han ikke får en cast fejl, men derimod en null exception. Det MEGET underlige er, at selv om at s.Peek returnerer null, så bør kompileren give en "kan ikke implicit bla, bla." og derfor bør han aldrig nå til den linie der giver en null exception. Måske kører linien med s.Peek slet ikke!
Avatar billede jakobandersen Nybegynder
11. september 2002 - 22:40 #15
Ja, jeg undrer mig også over at det bliver NullReference, Jeg tror vi bliver nødt til at få hele koden på bordet :-)
Avatar billede tmouritsen Nybegynder
24. september 2002 - 17:07 #16
Det kan gære at det ikke er en tabel der hedder Kategori. Således at h_DataSet er god nok - det er et DataSet og ikke et null objekt, men h_DataSet.Tables("Kategori") returnerer null og så når det galt når du kalder h_DataSet.Tables("Kategori").Rows.Count()
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
Kurser inden for grundlæggende programmering

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