Avatar billede krestionsen Nybegynder
23. juni 2006 - 14:19 Der er 12 kommentarer og
1 løsning

Konvertere dataset om til en date

Jeg har lavet nedenstående metode, som returnere en dato, men hvordan jeg konverteret den til en date, så den kan vises i min kalender?   

public System.Data.DataSet metode()
    {
        System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);

        string queryString = "SELECT [Klient].[dato] FROM [mode]";
        System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
        dbCommand.CommandText = queryString;
        dbCommand.Connection = dbConnection;

        System.Data.IDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter();
        dataAdapter.SelectCommand = dbCommand;
        System.Data.DataSet dataSet = new System.Data.DataSet();
        dataAdapter.Fill(dataSet);

        return dataSet;
    }
Avatar billede jps6kb Novice
23. juni 2006 - 14:27 #1
Den returnerer da et DataSet? Ikke en dato..
Avatar billede krestionsen Nybegynder
23. juni 2006 - 14:40 #2
Ja, og det er det dataset jeg gerne vil have konverteret om til en date, så jeg kan smide den ind i min kalender?
Avatar billede nielle Nybegynder
23. juni 2006 - 15:05 #3
Hvorfor overhovedet gå via et DataSet hvis det alligevel ikke skal bruges direkte:

        public static DateTime metode()
        {
            System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);

            string queryString = "SELECT [Klient].[dato] FROM [mode]";
            System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
            dbCommand.CommandText = queryString;
            dbCommand.Connection = dbConnection;

            dbConnection.Open();
            DateTime dato = (DateTime) dbCommand.ExecuteScalar();
            dbConnection.Close();

            return dato;
        }
Avatar billede krestionsen Nybegynder
25. juni 2006 - 13:26 #4
Jeg har prøvet det eksempel du kom med og nu ser min kode sådan ud:

public static DateTime metoden(int klientid)
        {
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\Inetpub\\wwwroot\\web\\db1.mdb";

   
            System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);
            string queryString = "SELECT [Klient].[Henvisningsdato] FROM [Klient] WHERE ([Klient].[KlientID] = @KlientID)";
           
            System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
            dbCommand.CommandText = queryString;
            dbCommand.Connection = dbConnection;
   
            dbConnection.Open();
       
            DateTime returnVar = (DateTime)dbCommand.ExecuteScalar();
   
            dbConnection.Close();
   
            return returnVar;
        }

Min void Page_Load() ser ud som nedenunder

void Page_Load()
    {
        if (!Page.IsPostBack)
        {
            Calendar2.SelectedDate = metoden(70);
        }
    }

Når jeg kører min kode, så får jeg følgende fejl

Der er ikke angivet nogen værdi for en eller flere krævede parametre.
Avatar billede nielle Nybegynder
25. juni 2006 - 16:42 #5
I din kode angiver du at du ønsker at bruge parameteren @KlientID, men du opretter den ikke nogen steder, og du binder den hellere ikke til nogen værdi.
Avatar billede krestionsen Nybegynder
27. juni 2006 - 16:25 #6
Jo, nede i min void page_load() angiver jeg metoden(70), hvor 70 er det klient parameter. Er det det du mener med værdi?
Avatar billede nielle Nybegynder
27. juni 2006 - 17:47 #7
"Parametre" er ikke det samme som "argumenter".

Når du skriver "@KlientID" i din SQL-streng:

    string queryString = "SELECT [Klient].[Henvisningsdato] FROM [Klient] WHERE ([Klient].[KlientID] = @KlientID)";

- så kaldes det for en "parameter".

Din funktion tager et argument, "klientid", og for at dette skal indsættes på "@KlientID" pladsen, skal variablen klientid "bindes" til parameteren @KlientID. Du mangler de to linjer i din kode som gør dette, og det er det din fejlbesked påpeger.

Sådan her:

    public static DateTime metoden(int klientid)
    {
        string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\Inetpub\\wwwroot\\web\\db1.mdb";

        System.Data.OleDb.OleDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);
        string queryString = "SELECT [Klient].[Henvisningsdato] FROM [Klient] WHERE ([Klient].[KlientID] = @KlientID)";

        System.Data.OleDb.OleDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
        dbCommand.CommandText = queryString;
        dbCommand.Connection = dbConnection;

        // Disse to linjer manglede:
        dbCommand.Parameters.Add("@KlientID", System.Data.OleDb.OleDbType.Integer);
        dbCommand.Parameters["@KlientID"].Value = klientid;

        dbConnection.Open();

        DateTime returnVar = (DateTime) dbCommand.ExecuteScalar();

        dbConnection.Close();

        return returnVar;
    }

Læg i øvrigt mærke til at jeg har ændret din IDbConnection til en OleDbConnection og din IDbCommand til en OleDbCommand. Interfasene har deres berettigelse, det er bare ikke her.

Hvis du importere namespacet "System.Data.OleDb" kan du i øvrigt simplificere koden til:

    public static DateTime metoden(int klientid)
    {
        string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\Inetpub\\wwwroot\\web\\db1.mdb";

        OleDbConnection dbConnection = new OleDbConnection(connectionString);
        string queryString = "SELECT [Klient].[Henvisningsdato] FROM [Klient] WHERE ([Klient].[KlientID] = @KlientID)";

        OleDbCommand dbCommand = new OleDbCommand();
        dbCommand.CommandText = queryString;
        dbCommand.Connection = dbConnection;

        // Disse to linjer manglede:
        dbCommand.Parameters.Add("@KlientID", OleDbType.Integer);
        dbCommand.Parameters["@KlientID"].Value = klientid;

        dbConnection.Open();

        DateTime returnVar = (DateTime) dbCommand.ExecuteScalar();

        dbConnection.Close();

        return returnVar;
    }
Avatar billede krestionsen Nybegynder
05. juli 2006 - 15:52 #8
Yes, nu virker metoden, nu har jeg bare problemer med at få den sat ind i min kalender, hvor jeg skriver koden neden under og når jeg skriver den, så kommer der ingen fejl, men der sker heller ikke noget i kalenderen, den står bare på dags dato og så har jeg prøvet, at skrive den ud til en textbox og der skriver den den dato, som det skal være, men bare ikke i kalenderen?:

void Page_Load()
    {
        if (!Page.IsPostBack)
        {
            Calendar2.SelectedDate = metoden(70);
        }
    }
Avatar billede nielle Nybegynder
05. juli 2006 - 17:38 #9
Jeg mener ikke at du kan regne med at den valgte dato er fremhævet på nogen måde.

Den vises jo heller ikke med denne:

void Page_Load()
{
    if (!Page.IsPostBack)
    {
        Calendar2.SelectedDate = DateTime.Now;
    }
}
Avatar billede krestionsen Nybegynder
09. juli 2006 - 21:08 #10
Jeg har prøvet at sætte den ind i en calendar  selectedchange men der virker den heller ikke. Kan man gøre det pÃ¥ en anden mÃ¥de?
Avatar billede nielle Nybegynder
09. juli 2006 - 21:16 #11
Jeg har ikke de store erfaringer med lige netop ASP.NET, men umiddelbart vil jeg tro at siden at ikke en gang dette:

Calendar2.SelectedDate = DateTime.Now

- virker, ja så er det nok lidt svært. :^|
Avatar billede krestionsen Nybegynder
02. september 2006 - 14:37 #12
Hej nielle kan du ikke lægge et svar, så du kan få nogle point:)
Avatar billede nielle Nybegynder
02. september 2006 - 16:19 #13
Svar :^)
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