Avatar billede kischi Novice
11. februar 2009 - 22:43 Der er 35 kommentarer og
1 løsning

WHERE i min sql sætning

Hej jeg har en hjemmeside hvor jeg prøver at få noget til at ske hvis system tiden er den samme som tiden i min ms sql database.

Men jeg ved ikke helt hvordan jeg skal skrive det, der er flere poster i min db med forskellige tidspunkter så den tager bare den første og sammenligner system tiden med den.

min kode ser sådan ud indtil videre:

SqlCommand objcmd = new SqlCommand();


        objcmd.Connection = objconn;
        objcmd.CommandType = CommandType.Text;

        objcmd.CommandText = "SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105)  ";


        objconn.Open();

        DateTime tid = (DateTime)objcmd.ExecuteScalar();
        if (DateTime.Now.Hour == tid.Hour)
        {
            test.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }
        else
        {
            ikke.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }

        objconn.Close();

så nu sammenligner den kun datoen i sql sætningen


Men jeg vil også have at tiden skal sammenlignes, så den ikke bare tager den første tid den dag.

Jeg havde tænkt noget lignende det her:

WHERE CONVERT(VARCHAR, tid, 105) = CONVERT(VARCHAR, GETDATE(), 105)";

105 skal udskiftes med noget, men jeg ved ikke hvad man skal skrive for kun at få tiden.

Og så skal den sættes ind i den anden sql sætning men kan ikke lige få det til at virke.

Håber i forstår hvad jeg mener og at i kan hjælpe?
Avatar billede wagner Nybegynder
11. februar 2009 - 22:46 #1
Har du prøvet at kigge her:

http://doc.ddart.net/mssql/sql70/ca-co_1.htm

Wagner
Avatar billede kischi Novice
11. februar 2009 - 23:05 #2
Ok tak, nu har jeg fundet ud af at jeg skal udskifte 105 med 108 for kun at få tiden.

Men hvordan kan jeg sætte de 2 sql sætninger sammen:

SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105)  ";

og

WHERE CONVERT(VARCHAR, tid, 108) = CONVERT(VARCHAR, GETDATE(), 108)";

Hvis det overhovedet er rigtigt.

Forstår du hvad jeg vil?

du kan også det det på: http://radio.web.surftown.dk/default.aspx
Avatar billede csvendsen Nybegynder
12. februar 2009 - 06:45 #3
Prøv med:
SELECT tid FROM PROGRAM WHERE
CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105) AND CONVERT(VARCHAR, tid, 108) = CONVERT(VARCHAR, GETDATE(), 108)
Avatar billede kischi Novice
12. februar 2009 - 09:05 #4
Det virker desværre ikke, så kommer der bare en fejl hvor der står:
Object reference not set to an instance of an object. ??
Avatar billede csvendsen Nybegynder
12. februar 2009 - 17:59 #5
Det synes jeg er mystisk, har prøvet at lave en Query i SQL 2005 Express på min db med en lignende sql forespørgsel, og her virker det fint.
Hvis du lige dumper koden du har prøvet med, så vil jeg godt kigge på det, men det bliver først i morgen tidlig, da jeg logger af nu...
Avatar billede kischi Novice
12. februar 2009 - 21:54 #6
Sql sætningen ser sådan ud:

SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105) AND CONVERT(VARCHAR, tid, 108) = CONVERT(VARCHAR, GETDATE(), 108)  "

og fejlen siger:
Object reference not set to an instance of an object.
Avatar billede csvendsen Nybegynder
13. februar 2009 - 05:59 #7
Ok, men den fortæller ikke hvor i koden den fejler.

Hvis jeg har forstået spørgsmålet rigtigt, dvs. at du vil checke om den største dato/tid i databasen er lig med systemdato, var det så ikke bedre at hente den, og så efterfølgende lave check:

"SELECT TOP(1) tid FROM Program ORDER BY
convert(VARCHAR(10), date, 102) DESC,
ORDER BY convert(VARCHAR(10), tid, 108) DESC";

og vil du checke mere en den første/højeste dato/tid skriver du blot f.eks. top(10).

Skal checket være indenfor samme dato tilføjer du blot en where i ovenstående:

WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105)
Avatar billede kischi Novice
13. februar 2009 - 17:35 #8
Nej, jeg tror du har misforstået det lidt, eller også er det bare mig der ikke har forklaret det ordentligt. :-D

Den skal ikke tjække om systemtiden er det samme som den højeste tid i min db.

Men den skal tjække om system tiden er det samme som bare 1 af tiderne i min db.

Det jeg vil have skal ske i slutningen, nu prøver jeg jo lige at tage et skridt af gangen :-)

der skal være et lille billede ved siden af den tid det er nu.
Så den skal jo tjække om system tiden er det samme som 1 af tiderne i min db, og så skal der ske noget i min if sætning.

Du kan se hvad den gør inde på: http://radio.web.surftown.dk/

i bunden står der: Vi sammenligner 17 med 15 de er faktisk 13-02-2009 17:28:08 og 02-02-2009 15:00:00

Fordi du sammenligner den kun med den øverste tid i min db men jeg skal have den til at sammenligne med alle tiderne.

Det her er min kode indtil videre:

SqlCommand objcmd = new SqlCommand();


        objcmd.Connection = objconn;
        objcmd.CommandType = CommandType.Text;

        objcmd.CommandText = "SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105) ";


        objconn.Open();

        DateTime tid = (DateTime)objcmd.ExecuteScalar();
        if (DateTime.Now.Hour == tid.Hour)
        {
            test.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }
        else
        {
            ikke.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }

        objconn.Close();

Forstår du hvad jeg mener nu?
Kan du overskue det? :-D
Avatar billede csvendsen Nybegynder
14. februar 2009 - 07:13 #9
Som jeg nu forstår det, er det du vil at checke, om den aktuelle time (hour) findes i databasen indenfor den samme dag.
Hvis jeg nu har fattet det rigtigt, vil jeg foreslå:

'Vi finder aktuel time og time + 1
      Dim intTime As Integer = Date.Now.Hour
      Dim intTime1 As Integer = intTime + 1

'Konverterer til en streng og tilføjer et 0 hvis mindre end 10
      Dim strTime As String = Trim(Str(intTime))
      Dim strTime1 As String = Trim(Str(intTime1))
      If intTime < 10 Then strTime = "0" + strTime
      If intTime1 < 10 Then strTime1 = "0" + strTime1

"SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105) AND
convert(varchar, dato,108) >= '" + strtime + "' and convert(varchar,dato,108) < '" + strtime1 + "'"
Avatar billede kischi Novice
14. februar 2009 - 12:30 #10
Ok det vil jeg prøve, men det er vb du har skrevet det i ik?

Jeg koder i c#, ved du hvordan man skriver det i c#?
Avatar billede csvendsen Nybegynder
15. februar 2009 - 09:57 #11
Ups, jo det er vb, var ikke opmærksom på det var i c#.

Så laver vi det direkte i sql.
Jeg har ikke testet det, men prøv med:

SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105)
AND datepart("hh",Dato) >= datepart("hh",getdate()) 
AND datepart("hh",dato) < datepart("hh",getdate())+1
Avatar billede csvendsen Nybegynder
15. februar 2009 - 10:00 #12
rettelse:
SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105)
AND datepart("hh",date) >= datepart("hh",getdate()) 
AND datepart("hh",date) < datepart("hh",getdate())+1
Avatar billede kischi Novice
15. februar 2009 - 10:32 #13
Ok tak, det vil jeg prøve, men hvad skal jeg så skrive istedet for:
DateTime tid = (DateTime)objcmd.ExecuteScalar();

fordi nu kommer den med en fejl:
Object reference not set to an instance of an object.

Du kan se det på: http://radio.web.surftown.dk/
Avatar billede csvendsen Nybegynder
16. februar 2009 - 07:27 #14
Smid sql sætningen ind i en query eller stored procedure, så kan du se hvad der fejler.
Hvis du har felterne tid og date i tabellen Program, burde det virke.
Avatar billede kischi Novice
16. februar 2009 - 09:37 #15
Jeg forstår ikke helt det med en stored procedure.

Men min sql sætning ser sådan ud:

"SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105) AND datepart(hh,date) >= datepart(hh,getdate())AND datepart(hh,date) < datepart(hh,getdate())+1";

???
Avatar billede csvendsen Nybegynder
16. februar 2009 - 12:53 #16
Du har glemt gåseøjne omkring "hh" alle steder.
Prøv at køre sætningen i en query med "hh".
Har du ikke SQL Server Express, ellers kan den hentes gratis hos Microsoft. 

Jeg har nu testet sql sætningen i min egen db, og her virker det på en tabel med et datofelt. Jeg har dog fratrukket en dag fra aktuel dato, da der ikke er poster fra i dag:

SELECT    Login, Dato
FROM        dbo.login
WHERE    CONVERT(VARCHAR, dato, 105) = CONVERT(VARCHAR, GETDATE()-1, 105)
AND datepart("hh",dato) >= datepart("hh",getdate())
AND datepart("hh",dato) < datepart("hh",getdate())+1

Jeg vil godt hjælpe med en stored procedure og et kald til denne fra koden, men prøv lige sql fra en query...
Avatar billede kischi Novice
16. februar 2009 - 13:18 #17
Ja det glemte jeg at fortælle dig, men hvis der er gåseøjne omkring "hh" så kommer der en rød streg under somom det er forkert kode.

og når jeg køre musen hen over står der: 
; expected

men jeg ved bare ikke hvor jeg skulle placere den, nu ser min sql query sådan ud:

        objcmd.CommandText = "SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105) AND datepart("hh",dato) >= datepart("hh",getdate()) AND datepart("hh",dato) < datepart("hh",getdate())+1 ";
Avatar billede csvendsen Nybegynder
16. februar 2009 - 17:39 #18
Ja, men da "hh" er i en streng, skal du nok bruge ""hh"" ??
Nu koder jeg i VB, men mon ikke det også gælder i c#:

      objcmd.CommandText = "SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105) AND datepart(""hh"",dato) >= datepart(""hh"",getdate()) AND datepart(""hh"",dato) < datepart(""hh"",getdate())+1 ";
Avatar billede kischi Novice
16. februar 2009 - 22:47 #19
Nej den gør desværre det samme, jeg ville da også tro at det ville virke selv om du bruger vb fordi det her er jo sql.

men nu ser den bare sådan ud:

        objcmd.CommandText = "SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105) AND datepart(""hh"",dato) >= datepart(""hh"",getdate()) AND datepart(""hh"",dato) < datepart(""hh"",getdate())+1 ";
Avatar billede csvendsen Nybegynder
17. februar 2009 - 07:27 #20
Lav en Stored Procedure og prøv at køre den direkte:

CREATE PROCEDURE dbo.spGetTimeHour
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) =
CONVERT(VARCHAR, GETDATE(), 105)
AND datepart("hh",date) >= datepart("hh",getdate())
AND datepart("hh",date) < datepart("hh",getdate())+1 

END
GO

Når du skal kalde den fra programmet skal du erstatte
CommandType.Text med CommandType.StoredProcedure
og angive navnet på stored procedure, her 'dbo.getTimeHour'
Avatar billede kischi Novice
17. februar 2009 - 10:13 #21
Ok, men nu tror jeg at jeg ikke helt har forstået det, fordi der kommer røde streger under næsten det hele, og det ser og ud som om det er lidt ude af context.

nu ser det hele sådan ud:

SqlCommand objcmd = new SqlCommand();
       

        objcmd.Connection = objconn;
        objcmd.CommandType = CommandType.StoredProcedure;

        CREATE PROCEDURE dbo.spGetTimeHour
        AS
        BEGIN
        // SET NOCOUNT ON added to prevent extra result sets from
        // interfering with SELECT statements.
        SET NOCOUNT ON;
        SELECT tid FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) =
        CONVERT(VARCHAR, GETDATE(), 105)
        AND datepart("hh",date) >= datepart("hh",getdate())
        AND datepart("hh",date) < datepart("hh",getdate())+1

        END
        GO

        objconn.Open();

        DateTime tid = (DateTime)objcmd.ExecuteScalar();
        if (DateTime.Now.Hour == tid.Hour)
        {
            test.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }
        else
        {
            ikke.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }

        objconn.Close();

Og også, hvor skal man skrive navnet på stored procedure efter objcmd.CommandType = CommandType.StoredProcedure;

???
Avatar billede csvendsen Nybegynder
17. februar 2009 - 17:32 #22
No, no, du skal oprette en stored procedure direkte i databasen, enten i MS-SQL Server 2005 Express, eller du kan også gøre det i Visual Studio under View, Server Explorer og Stored Procedure.
Du skal selvfølgelig være opkoblet til databasen her.

Jeg foretrækker selv SQL Server 2005 Express at arbejde i, og den er gratis.

Når du har oprettet SP, og selvfølgelig uden den melder fejl, prøver du at vælge Executing, og kan så se resultatet direkte. 
Herefter når alt er ok, kan du kalde den fra programkoden.

Som jeg kan se, er du ikke helt med på dette, men når du har fået Stored Procedure til at virke direkte på DB niviau, så skal jeg nok prøve at hjælpe med programkoden, hvis du ikke selv kan finde eksempler via Google til kald af SP.
Avatar billede kischi Novice
17. februar 2009 - 19:31 #23
Ok nu executer min stored procedure ihvertfald uden fejl, men hvordan er det jeg skulle kalde navnet, fordi jeg kan ikke bare skrive det sådan her:
objcmd.CommandType = CommandType.StoredProcedure dbo.getTimeHour;

hvordan skal jeg så skrive: dbo.getTimeHour
Avatar billede csvendsen Nybegynder
18. februar 2009 - 06:22 #24
Jeg har trukket et eksempel ud fra min code og konverteret fra VB til C#. Du kan nok selv tilpasse det til din kode, jeg har ikke meget tid her til morgen.

string cConnString;
cConnString = cn_g;
SqlClient.SqlConnection oConn = new SqlClient.SqlConnection();
oConn.ConnectionString = cConnString;
oConn.Open();
SqlClient.SqlCommand oCmd = new SqlClient.SqlCommand();
oCmd = new SqlCommand("dbo.getTimeHour", oConn);
oCmd.CommandType = Data.CommandType.StoredProcedure;
oCmd.Connection = oConn;
SqlDataReader rdr = oCmd.ExecuteReader();
while (rdr.Read) {
    SQLCheckDBAdgang = true;
    intOrdbogCount = rdr(0);
}
rdr.Close();
oConn.Close();
Avatar billede kischi Novice
18. februar 2009 - 10:35 #25
Nu har jeg skrevet det her:

SqlConnection ObjConn = new SqlConnection();
       
        ObjConn.Open();
        SqlCommand ObjCmd = new SqlCommand();
        ObjCmd = new SqlCommand("dbo.getTimeHour", ObjConn);
        ObjCmd.CommandType = CommandType.StoredProcedure;
        ObjCmd.Connection = ObjConn;
        SqlDataReader reader = ObjCmd.ExecuteReader();
        while (reader.Read)
        {
            SQLCheckDBAdgang = true;
            intOrdbogCount = reader(0);
        }
        reader.Close();
        ObjConn.Close();


men den siger at: SQLCheckDBAdgang, "The name SQLCheckDBAdgang does not exist in the current context" og den siger det samme med: intOrdbogCount

og med: reader, siger den: reader is a variable but is used like a method

og med: (reader.Read), siger den: cannot convert method group read to non-delegate type bool. did you intend to invoke the method.

???
Avatar billede csvendsen Nybegynder
18. februar 2009 - 11:16 #26
Ja, men som jeg skrev, skulle du selv tilpasse det eksempel jeg blot trak ud fra min kode. SQLCheckDBAdgang og intOrdbogCount er nogle globale variabler i min kode, og dem har du jo ikke.
Dvs. f.eks.

  if (reader.Read)
        {
        //Der er poster indenfor aktuel time
        //Her indsætter du så din kode og
        //henter værdien i tid fra reader(0) som kommer fra SP;
        }
  else
        {
        // Der er ingen poster indenfor aktuel time
        //Her indsætter du så din kode til håndtering af dette
        }
Avatar billede kischi Novice
18. februar 2009 - 16:02 #27
Ja men nu har jeg prøvet at få det til at virke i min egen kode.
men der er stadig noget af det som ikke virker, koden ser sådan ud nu:

        SqlConnection ObjConn = new SqlConnection();
       
        ObjConn.Open();
        SqlCommand ObjCmd = new SqlCommand();
        ObjCmd = new SqlCommand("dbo.spGetTimeHour", ObjConn);
        ObjCmd.CommandType = CommandType.StoredProcedure;
        ObjCmd.Connection = ObjConn;

        SqlDataReader reader = ObjCmd.ExecuteReader();
        if (reader.Read)
        {
            test.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }
        else
        {
            ikke.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }

       
        reader.Close();
        ObjConn.Close();


med (reader.Read), siger den stadig: cannot convert method group read to non-delegate type bool. did you intend to invoke the method.

og med: tid, siger den: the name tid soes not exist in the current context.

hvor skal jeg initialiser tid, før gjorde jeg det jo i if sætningen hvor der står (reader.Read) nu. ???
Avatar billede csvendsen Nybegynder
19. februar 2009 - 06:01 #28
Du får ikke defineret tid og indlæst denne, hvis der er poster.
forslag:

  string tid = "Ingen tidspunkter.";
    SqlDataReader rdr = ObjCmd.ExecuteReader();
    while (rdr.Read) {
        tid = Convert.ToString(rdr(0));
    }
    rdr.Close();

og så kan du trække hour ud af strengen, hvis der er læst noget ind.
Kan nok også laves med en DateTime, det kan du selv prøve.
Avatar billede kischi Novice
19. februar 2009 - 09:17 #29
ok nu har jeg defineret tid så der ikke kommer en rød streg under, sådan her: string tid; men jeg prøver også at trække Hour ud af strengen som du siger jeg skal men jeg tror ikke at jeg gør det rigtigt, fordi der er stadig en rød streg under Hour.

Hvordan skal jeg gøre det?
Avatar billede csvendsen Nybegynder
20. februar 2009 - 06:24 #30
'Du trækker time ud fra strengen som indeholder dato og tid
'Et eksempel: tid = 20-02-2009 06:05:40
    string hour = Strings.mid(tid, 12, 2);
'Så bliver hour = "06"


'Men lad os i stedet lave det sådan:

    System.DateTime tid = null;
    while (rdr.Read) {
        tid = rdr(0);
    }
    if (tid == null) {
        //Erstat dette med din kode
        ikke.Text = "Ingen poster";
    }
    else {
        //Erstat dette med din kode
        tekst.text = tid;
    }
Avatar billede kischi Novice
20. februar 2009 - 09:55 #31
Nu ser min kode sådan her ud:

SqlConnection ObjConn = new SqlConnection();

        ObjConn.Open();
        SqlCommand ObjCmd = new SqlCommand();
        ObjCmd = new SqlCommand("dbo.spGetTimeHour", ObjConn);
        ObjCmd.CommandType = CommandType.StoredProcedure;
        ObjCmd.Connection = ObjConn;

        SqlDataReader reader = null;
       
        System.DateTime = null;

        while (reader.Read())
        {
            tid = reader[0];
        }

        if (tid == null)
        {
            test.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }
        else
        {
            ikke.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }


        reader.Close();
        ObjConn.Close();

men der kommer fejl ved: System.DateTime = null;

Den siger: System.DateTime is a type, witch is not valid in the given context.

og også ved tid. Men jeg ved godt jeg skal definere tid. Så jeg prøvede at skrive: string tid;

men så kommer der en fejl ved: tid = reader[0];

som siger: cannot implicitly convert type object to stringan explicit conversion exists (are you missing a cast?)

???
Avatar billede csvendsen Nybegynder
20. februar 2009 - 10:42 #32
Hvis du benytter 'string tid' skal du konvertere datotid til en streng med :
tid = Convert.ToString(rdr(0));

Men prøv med :

SqlConnection ObjConn = new SqlConnection();

        ObjConn.Open();
        SqlCommand ObjCmd = new SqlCommand();
        ObjCmd = new SqlCommand("dbo.spGetTimeHour", ObjConn);
        ObjCmd.CommandType = CommandType.StoredProcedure;
        ObjCmd.Connection = ObjConn;
        SqlDataReader reader = ObjCmd.ExecuteReader();
       
        System.DateTime tid = null;

        while (reader.Read())
        {
            tid = reader[0];
        }

        if (tid == null)
        {
            ikke.Text = "Ingen tidspunkter fundet i databasen indenfor denne time : " +
            DateTime.Now.Hour;
        }
        else
        {
            text.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }


        reader.Close();
        ObjConn.Close();
Avatar billede kischi Novice
20. februar 2009 - 10:56 #33
nu kommer der en fejl ved: System.DateTime tid = null;

som siger: cannot convert null to 'system.datetime' because it is a non-nullable value type

og også ved: tid = reader[0];

som siger: cannot implicitly convert type object to stringan explicit conversion exists (are you missing a cast?)

??

nu ser koden sådan ud:

SqlConnection ObjConn = new SqlConnection();

        ObjConn.Open();
        SqlCommand ObjCmd = new SqlCommand();
        ObjCmd = new SqlCommand("dbo.spGetTimeHour", ObjConn);
        ObjCmd.CommandType = CommandType.StoredProcedure;
        ObjCmd.Connection = ObjConn;
        SqlDataReader reader = ObjCmd.ExecuteReader();

        System.DateTime tid = null;

        while (reader.Read())
        {
            tid = reader[0];
        }

        if (tid == null)
        {
            ikke.Text = "Ingen tidspunkter fundet i databasen indenfor denne time : " +
            DateTime.Now.Hour;
        }
        else
        {
            test.Text = "Vi sammenligner " + DateTime.Now.Hour + " med " + tid.Hour + " de er faktisk " + DateTime.Now + " og " + tid;
        }


        reader.Close();
        ObjConn.Close();
Avatar billede csvendsen Nybegynder
20. februar 2009 - 17:33 #34
Det er nok mig der ikke skriver det helt rigtigt i C#.

Jeg koder som tidligere nævnt i VB, og prøver at oversætte det.

Du bliver nok nødt til at bede om hjælp hos en som koder i C#, men du er da nået et skridt videre, og du har fået en Stored Procedure til at virke.

Synes du skal arbejde videre ud fra denne, pga. :

1. SP er betydelig mere effektiv, arbejder direkte på Serveren.
2. Er nem at vedligeholde og indeholder SQL i SP fremfor i koden.
3. Kan indeholde parametre, som du så kalder med disse fra koden.
4. Du ser straks om SQL syntaksen er OK.
5. Se resultat af forespørgelsen direkte i DB.
6. Kan forespørge med parametre også i databasen.
7. Nem at kalde fra koden.

Ja, sidstnævnte er du nok ikke enig i, men når du først lærer det, så vil du garantere være enig.

Held og lykke fremover.
Avatar billede kischi Novice
20. februar 2009 - 23:40 #35
Ja ok, tusind tak for din hjælp.
Jeg er ihvertfald kommet videre end da jeg startede :-D

Jeg vil prøve at spørge nogle c# folk. :-D
Avatar billede kischi Novice
25. januar 2011 - 16:53 #36
Så lukker jeg lige
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
Computerworld tilbyder specialiserede kurser i database-management

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



IT-JOB

Udviklings- og Forenklingsstyrelsen

Testmanager til Partsrepræsentation

De Nationale Geologiske Undersøgelser for Danmark og Grønland (GEUS)

IT-systemadministrator søges til GEUS