Avatar billede kischi Novice
04. februar 2009 - 11:23 Der er 3 kommentarer og
1 løsning

Ændre billede position på bestemt tid

Hej Jeg har lavet et felt i min ms sql database med "datetime" som kun viser tiden på min hjemmeside. Det er også helt fint.

Men hvordan kan jeg bruge tiden til noget? jeg vil have et lille billede ved siden af tiden. for eksempel hvis klokken er 13:00 så skal der være et lille billede ved siden af kl. 13:00. Og så når kl. bliver 15:00 skal det samme billede rykke ned til 15:00.

Hvordan kan jeg bruge system tiden på den måde?

I kan måske se hvad jeg mener på:
http://radio.web.surftown.dk/default.aspx

min kode som trækker det ud på aspx siden ser sådan her ud:

<%# Eval("tid", "{0:t}")%>

og her er min codebehind side:

SqlConnection objconn = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ToString());
            SqlCommand objcmd = new SqlCommand();


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

            if (DateTime.Now.Hour > 3)
            {

                objcmd.CommandText = "SELECT * FROM PROGRAM WHERE CONVERT(VARCHAR, date, 105) = CONVERT(VARCHAR, GETDATE(), 105)";
         
       
            SqlDataReader reader = null;

            objconn.Open();
            reader = objcmd.ExecuteReader();
            program.DataSource = reader;
            program.DataBind();

            objconn.Close();
            }
 
        else
            {
                objcmd.CommandText = "SELECT * FROM PROGRAM WHERE DATE = DATEADD(day, DATEDIFF(day, 1, GETDATE()), 0)";

                SqlDataReader reader = null;

                objconn.Open();
                reader = objcmd.ExecuteReader();
                program.DataSource = reader;
                program.DataBind();

            }

        }
collonnen i min db som system tiden skal være det samme som hedder tid.
Jeg har en fornæmelse omat man måske skal gøre noget lignene det her:

objcmd.CommandText = "SELECT tid FROM PROGRAM CONVERT(VARCHAR, GETDATE(), {0:t})";

og så senere lave en if sætning.

if(tid == getdate() "{0:t}")
{
  insæt billede med img src="x";
}

men jeg ved at det skal skrives anderledes, og jeg er ikke sikker på at det er noget af det rigtige jeg har fat i.

Men jeg håber der er nogle som kan hjælpe mig?

mvh. Adam
Avatar billede kentjohansen Nybegynder
12. februar 2009 - 21:47 #1
Altså du vil have et lille ikon ud for kl 12 indtil kl bliver 15, så vil du have ikonet ud for den linie???

Altså mangler du en sql for at få fat i time fra db'en? Det kan du gøre således:

SELECT CONVERT(CHAR(2), GETDATE(), 108)
returnere f.eks. 15

Det returnere time-delen af dato/tid fra serveren.
Nu ved jeg så ikke helt var formatet i din tid-felt i databasen er, men hvis der f.eks. står 21:00 så kan din hent nuværende tid bare være

SELECT CONVERT(CHAR(2), GETDATE(), 108)
returnere f.eks. 15:00 - altså incl minutter.
Avatar billede kischi Novice
12. februar 2009 - 22:04 #2
Ja tak, du har forstået det rigtigt, det er det jeg vil have skal ske.

Men nu har jeg fundet ud af noget mere ihvertfald, nu sammenligner den system tiden med tiden i min db, men kun den første række.
Jeg skal have den til at undersøge alle rækkerne om system tiden er den samme som en af dem.

Nu ser min kode sådan her ud:

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();

Ved du hvordan man ser om tiden er den samme som alle tiderne istedet for kun den første.

Forstå du hvad jeg mener?

Du kan også se hvad der sker på: http://radio.web.surftown.dk/
Avatar billede kentjohansen Nybegynder
14. februar 2009 - 10:49 #3
Ja jeg forstår hvad du mener, men det er ikke lige et MS SQL spørgsmål. Måske der er nogen ASP.NET mennesker der læser med, som kan hjælpe.

Men du skal have en lykke i dit kode. Altsdå du ser kun på een record. Så efter du har åbnet din sql, så skal du tilføje en eller anden form for løkke - f.eks. en while
Avatar billede kischi Novice
25. januar 2011 - 16:52 #4
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