Avatar billede berglund Nybegynder
30. september 2007 - 14:16 Der er 7 kommentarer

MsSQL returnerer kun nogle kolonner i recordset!

Hej alle

Jeg sidder med det underligeste spørgsmål.

Jeg progammerer en side i ASP med VB og alting fungerer sådan set fint. Jeg har en fungerende Mssql 2005 express database kørende og jeg forbinder helt fint med den.

Mit problemer er at på et tidspunkt skal jeg hente et recordset fra databasen, men jeg kan kun få adgang til nogle af værdierne, selvom jeg ved at resten er der!

ASP-koden er:
*********************
strSQL = "EXECUTE sp_vis_artikel_2 @intArtikelId =" & intArtikelId
Set RS = myConn.Execute(strSQL)
If Not RS.EOF Then
            datOprettet = RS("datOprettet")
            datOpdateret = RS("datOpdateret")
            strOpdateretAf = RS("strOpdateretAf")
            strOverskrift = RS("strOverskrift")
            strIntroTekst = RS("strIntroTekst")
            strMusikerenMener = RS("strMusikerenMener")
            strTekst1 = RS("strTekst1")
            strTekst2 = RS("strTekst2")
            strTekst3 = RS("strTekst3")
            strTekst4 = RS("strTekst4")
            strTekst2_gl = RS("strTekst2_gl")
            strEnyt = RS("strEnyt")
            intProducentId = RS("intProducentId") 
            intForfatterId = RS("intForfatterId")
            intKategoriId = RS("intKategoriId")
            intInstrumentTypeId = RS("intInstrumentTypeId")
            intStamid = RS("intStamId")   
            strForfatter = RS("strForfatter")
            strUrl = RS("strUrl")
            strProducent = RS("strProducent")
            strModel = RS("strModel")
            datDato = RS("datDato")
            intEnyt = RS("intEnyt")   
            datEnyt = RS("datEnyt")
            datMusikeren = RS("datMusikeren")
            intLaestAntal = RS("intLaestAntal")
            bolGodkendt = RS("bolGodkendt")
            bolMusikeren = RS("bolMusikeren")
      intBladUdgivelseId = RS("intBladUdgivelseId")
    intGenreId = RS("intGenreId")
    ' TESTING PURPOSE
    WriteToFile "d:/musikeren.dk/strURL.txt", strSQL, False
    WriteToFile "d:/musikeren.dk/strURL.txt", " strURrl: " & RS("strUrl"), True
    WriteToFile "d:/musikeren.dk/strURL.txt", " datOprettet: " & RS("datOprettet"), True           
        WriteToFile "d:/musikeren.dk/strURL.txt", " strOverskrift: " & RS("strOverskrift"), True
        WriteToFile "d:/musikeren.dk/strURL.txt", " intBladUdgivelseId: " & RS("intBladUdgivelseId"), True
        WriteToFile "d:/musikeren.dk/strURL.txt", " strForfatter: " & RS("strForfatter"), True
        WriteToFile "d:/musikeren.dk/strURL.txt", " strUrl: " & RS("strUrl"), True
        WriteToFile "d:/musikeren.dk/strURL.txt", " intKategoriId: " & cStr(RS("intKategoriId")), True
**************************

I omtalte fil kan man så læse at:

EXECUTE sp_vis_artikel_2 @intArtikelId =1742
strURrl: 
datOprettet: 30-09-2007 12:43:42
strOverskrift: Thomas Berglund. Hvad skufferne gemte intBladUdgivelseId: 5
strForfatter: 
strUrl: 
intKategoriId:


Men slår jeg op i databasen (med præcis samme SQL-sætning) uden om ASP (SQL management studio) er både strUrl, intKatergoriInd og strForfatter sat!

Jeg fatter simpelthen ikke at nogle værdier når frem mens andre ikke gør? Skriver jeg er en forkert RS("et eller andet") så får jeg en fejl, så det kan ikke være det.

sp_vis_artikel_2 er således skruet sammen:
...
SELECT     strOverskrift,
    strIntroTekst,
    strTekst1,
    strTekst2,
    strTekst3,
    strTekst4,
    strTekst2_gl,
    strEnyt, 
    intProducentId,
    intForfatterId,
    intKategoriId,
    intInstrumentTypeId,
    intStamId,
    strForfatter,
    strUrl,
    strProducent,
    strModel,
    datDato,
    intEnyt,
    datEnyt,
    datMusikeren,
    intLaestAntal,    
    bolGodkendt,    
    bolMusikeren,
    strMusikerenMener,
    datOprettet,
    datOpdateret,
    strOpdateretAf,
    intBladUdgivelseId,
    intGenreId
FROM tArtikler
WHERE intArtikelId = @intArtikelID

PLEASE HELP! Jeg bliver vanvittig!
-Thomas
Avatar billede krogstrup Nybegynder
30. september 2007 - 15:27 #1
Hej Thomas

Jeg tror måske jeg kan hjælpe dig... Har selv haft et problem for nylig der lyder mistænksomt meget som dit !

http://www.eksperten.dk/spm/798401
Avatar billede jansangill Nybegynder
30. september 2007 - 17:24 #2
I msSql kan det forekomme at nogle værdier ikke bliver vist, hvis de ikke er trukket ud af databasen i korrekt rækkefølge.

Måden at komme dette til livs kan være at lave det til en variable , og så skrive det ud.
Avatar billede berglund Nybegynder
01. oktober 2007 - 21:37 #3
jansangill, kan du komme et eksempel? Jeg tror ikke jeg forstår dit forslag.
Avatar billede jansangill Nybegynder
01. oktober 2007 - 21:54 #4
Istedet for at skrive RS("strForfatter"), så prøv dette:

forfatter = RS("strForfatter")

response.write forfatter
Avatar billede berglund Nybegynder
01. oktober 2007 - 22:03 #5
Hej krogstrup
Tak for dit link. Interessant læsning, men det løser ikke mit problem. Det som er meget mærkeligt er at jeg ved at det her kører på rigtig server også med mssql 2005 express. Databasen er oprindelige en mssql 2000 og kører i kombatilitets mode.Både på den "rigtige" server, og så på min developditto.

Jeg har fulgt dit forlag og connection string til uden held:
rovider=SQLNCLI;user id=XXXXXXXXpwd=XXXXXXX;server=(local);initial catalog=musikeren;DataTypeCompatibility=80.

SUK!
Avatar billede berglund Nybegynder
01. oktober 2007 - 22:04 #6
For resten, bør jeg vel også lige sige noget om mine felter er ikke sat med nvarchar(MAX) men mere a la nvarchar(50) og nvarchar(250) som det vildeste.
Avatar billede krogstrup Nybegynder
01. oktober 2007 - 23:09 #7
ok - ja, så kan jeg nok ikke komme med flere bidrag :-(

Håber du får løst dit problem.
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