Avatar billede pulv3n Nybegynder
26. marts 2013 - 17:12 Der er 8 kommentarer

INSERT INTO SQL tabel

Hej

Jeg er har et problem med at indsætte værdier i en SQL tabel.
Herunder ses et uddrag fra min ASP kode som virker helt fint:

<asp:SqlDataSource ID="OKB_db" runat="server"
    ConnectionString="<%$ ConnectionStrings:CastroSAS_OKB_connection %>"
    ProviderName="<%$ ConnectionStrings:CastroSAS_OKB_connection.ProviderName %>"
    SelectCommand="SELECT * FROM [OKB_db].[dbo].[WEB_Admin]"
    InsertCommand="INSERT INTO [OKB_db].[dbo].[WEB_Admin] ([UserId], [Org], [Navn], [Stilling], [TimeTracker_Read]) VALUES (?, ?, ?, ?, ?) "
>

<InsertParameters>
        <asp:Parameter Name="UserId" Type="String"/>
        <asp:Parameter Name="Org" Type="String"/>
        <asp:Parameter Name="Navn" Type="String" />
        <asp:Parameter Name="Stilling" Type="String" />
        <asp:Parameter Name="TimeTracker_Read" Type="Boolean" />
</InsertParameters>
</asp:SqlDataSource>

Problemet er, at tre midterste værdier i insertcommand under "VALUES" skal komme fra en anden sql tabel. Dvs. værdierne der skal indsættes i tabellen skal være en kombination af ovenstående insert parametre samt værdier fra en anden sql tabel.

jeg har forsøgt mig med denne insert command:
InsertCommand="INSERT INTO [OKB_db].[dbo].[WEB_Admin] ([UserId], [Org], [Navn], [Stilling], [TimeTracker_Read]) SELECT col1, col2, col3, col4, col5 FROM tabel2 "

Den virker også helt fint, men når jeg erstatter col1 og col5 med ? så fungere det ikke.

Er der nogen der har et forslag til hvordan problemet løses?
Avatar billede erikjacobsen Ekspert
26. marts 2013 - 18:48 #1
Hvis jeg forstår dig ret, så vil du udskifte et eller flere kolonnenavne ved hjælp af parameters, angivet ved et ?

Det kan man ikke, og det har men heller ikke brug for. Hvis du mener, at du har brug for det, så er det en suspekt databasestruktur.

Et ? kan udskiftes med en værdi, såsom en streng eller et tal.
Avatar billede pulv3n Nybegynder
26. marts 2013 - 18:58 #2
Jeg har nok ikke forklaret mig godt nok. Det jeg ønsker er, at indsætte nogle værdier på den næste række i en database. Jeg skal ikke ændre på kolonnenavnene.

Det er kun en delmængde af min samlede asp.net kode som vises i indlægget, men formålet med mit site er, at brugeren indtaster nogle værdier i nogle tekstebokse i et listview object hvorefter der skal hentes nogle stamdata fra en anden tabel som skal kombineres med det brugeren netop har indtastet og som skal indsættes i tabellen...
Er det til at forstå? ;)
Avatar billede erikjacobsen Ekspert
26. marts 2013 - 19:04 #3
Åh, ja, det er vel også hvad du skrev. Jeg skal bare lige have det skåret ud i letbeton.

Dvs. det svarer til at man kan sige

  SELECT 7

og få et flot syvtal ud, og så vil du lave en

  SELECT ?

og sætte syvtallet ind som en parameter. Jeg kan ikke på stående fod sige hvad der så gælder...

Men du har i den sidste SQL to ?-tegn, og har kun angivet to parameters, UserId og TimeTracker_Read - korrekt?
Avatar billede pulv3n Nybegynder
26. marts 2013 - 19:09 #4
hehe, ja det er korrekt.

Lad os sige jeg har en tabel med følgende kolonner:

BrugerId, Navn, Stilling, Organisation.

Brugeren taster KUN brugerid ind i et tekst felt på websiden hvorefter de resterende oplysninger hentes fra en anden tabel udfra det brugerid vedkommende har indtastet.

Det er lidt sådan noget jeg er ude i... forsimplet selvfølgelig.
Avatar billede erikjacobsen Ekspert
26. marts 2013 - 19:29 #5
Jeg har ikke lige adgang til noget MSSql, men i MySql kan man i hvert fald det der med "SELECT ?" som jeg skrev i #3.

Men har du så ikke en WHERE på din SELECT inden i din INSERT? Der må jo nok kun komme præcis een række.
Avatar billede pulv3n Nybegynder
26. marts 2013 - 19:32 #6
Okay, det er en MS SQL server der kører på og der virker det ikke.

Jeg har en WHERE på.... brugerid er altid unikt og samtidig den primære nøgle
Avatar billede erikjacobsen Ekspert
26. marts 2013 - 19:39 #7
Okay, så. Jeg har haft følgende kørt på MySql fra Java

"INSERT INTO test SELECT NULL,t,? FROM testdefault WHERE id=2"

og den sætter pænt de "kaniner" ind, der står i feltet t for id=2, samtidig med den værdi, der står for ?.

Hvilken fejlbesked får du?
Avatar billede kjulius Novice
21. april 2013 - 13:00 #8
Skal der ikke bruges navngivne parametre i T-SQL?
Noget ala:

DECLARE @UserId VARCHAR(50)
SET @UserId = 'Bussemanden'

INSERT INTO dbo.test (UserId, Org, Navn, Stilling, TimeTracker_Read)
VALUES(@UserId, 'IMF', 'Jules', 'Verne', '1')

Jeg kender absolut intet til aspx, så jeg ved ikke, hvordan det kan passes ind i sammenhængen...
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