Avatar billede azcii Nybegynder
11. september 2007 - 08:19 Der er 6 kommentarer og
1 løsning

Indsæt datetime i DB

Jeg prøver indsætte en post i en databasen, men datetime bliver ikke sat bliver NULL, de andre ting bliver sat rigtigt ind.
Hvad gør jeg forkert?

<asp:SqlDataSource id="CreatUser" runat="server"
    ConnectionString="<%$ ConnectionStrings:BloodlineConnection %>"
    SelectCommand="SELECT username, password, email, dateCreated FROM users"     
    InsertCommand="INSERT INTO users (username, password, email, dateCreated) VALUES (@username,@password,@email,@dateTime)">
    <SelectParameters>
    </SelectParameters>
    <InsertParameters>
        <asp:ControlParameter ControlID="reg_name" Name="username" PropertyName="Text" />
        <asp:ControlParameter ControlID="reg_pass" Name="password" PropertyName="Text" />
        <asp:ControlParameter ControlID="reg_mail" Name="email" PropertyName="Text" />
        <asp:Parameter Name="dateTime" Type=DateTime />
    </InsertParameters>
</asp:SqlDataSource>
Avatar billede neoman Novice
11. september 2007 - 08:38 #1
Hvilken kontrol bruger sqldatasourcen ? Sådan som du skriver det, så skal
  <asp:Parameter Name="dateTime" Type=DateTime />

være bundet i en eller anden kontrol som f.eks. et gridview, detailsview, whatever, som f.eks. ;             

<asp:BoundField DataField="HolidayDate" HeaderText="HolidayDate" SortExpression="HolidayDate" />

eller
  <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("HolidayDate") %>'></asp:TextBox>


Er den ikke det, ja, så får den ingen værdi, medmindre du selv giver den en værdi i code-behind: se her http://www.eksperten.dk/spm/795523
Du kan nemmest se det ved at trække et gridview ind, og angive din "CreatUser" som dens datasource. Så kan du gå ind i koden på aspx siden, og se hvordan det ser ud (og delete det bagefter)

Sådan helt subjektivt, så er det nok ikke helt anbefalelsesværdigt at bruge typer, eller andre reserverede ord, som navne/id'er for kontroller/variable:)
Avatar billede neoman Novice
11. september 2007 - 08:49 #2
et gridview kan umiddelbart ikke bruges til at INSERTE en ny record, kun til Select/Update/Delete, men mekanikken skulle være illustreret godt nok.

Til Inserts kan man f.eks. bruge et DetailsView der kan det hele laves i et hug.

I øvrigt - hvis du nu i din DB sætter defaulttil  getdate() for din  dateCreated , så slipper du for den parameter :)
Avatar billede azcii Nybegynder
11. september 2007 - 13:31 #3
Okay jeg tror stadig jeg er lidt lost.

I Toppen af koden har jeg:
<script runat="server">
    Sub sendReg(ByVal sender As Object, ByVal e As System.EventArgs)
        CreatUser.Insert()
        ?? ---> SqlDataSource.InsertParameters.Add("dateTime", DateTime.Now)
    End Sub
</script>

Kan man noget i den retning så man kan bruge den direkte i InsertCommand?
Avatar billede azcii Nybegynder
11. september 2007 - 13:34 #4
CreatUser.Insert() er selvfølgelig det sidste jeg gør i den sub :p
Avatar billede neoman Novice
11. september 2007 - 13:45 #5
ja lige præcis... og i det fald skal du så fjerne
<asp:Parameter Name="dateTime" Type=DateTime />
fra mark-upen.


minSqlDataSource.InsertParameters.Add("dateTime", DateTime.Now)

og
du kan eksekvere din insert ved at kalde

minSqlDataSource.Insert lige efter
Avatar billede azcii Nybegynder
11. september 2007 - 14:21 #6
Ahh og så sku jeg skriver

CreatUser.InsertParameters.Add("dateTime", DateTime.Now)
CreatUser.Insert()

istedet for

SqlDataSource.InsertParameters.Add("dateTime", DateTime.Now)
CreatUser.Insert()

og det er jo logisk nok da CreatUser er id'et på min SqlDataSource. Tak for hjælpen, smider du lige et svar.
Avatar billede neoman Novice
11. september 2007 - 14:24 #7
og et svar her
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