[mssql / asp] gevulde records worden leeg getoond

Pagina: 1
Acties:

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 14:37

Pelle

🚴‍♂️

Topicstarter
Dit is echt het vreemdste probleem dat ik ooit ben tegengekomen geloof ik 8)7
Heb het vanmiddag al even via ICQ aan Yarvieh voorgelegd, maar die zag het ook niet.

De situatie is alsvolgt: ik heb een stored procedure of een view, die een recordset returned. Als ik de SQL code uit zo'n SP of view in de Query Analyzer stop, dan komt er netjes de recordset uit die ik wil. Alle velden zijn gevuld, alle waardes kloppen.

Echter, als ik die recordset uit zo'n view of SP met ASP (Vbscript) wil tonen, dan worden sommige velden opeens leeg. Als ik ze met een response.write wil printen, dan wordt er gewoon niets weergegeven.

Zie hier (het relevante gedeelte van) de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<%
' variabelen
Dim Recordset1
Dim Recordset1_numRows
Dim Repeat1__numRows
Dim Repeat1__index
Dim pSmallImageUrl, pCatId, pProductId, pBrand, pDesc, pPrice

' recordset
Set Recordset1              = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_conn_kick_STRING
Recordset1.Source           = "SELECT *  FROM dbo.view_getspecials_all"
Recordset1.CursorType       = 0
Recordset1.CursorLocation   = 2
Recordset1.LockType         = 1
Recordset1.Open()

Recordset1_numRows  = 0
Repeat1__numRows    = -1
Repeat1__index      = 0
Recordset1_numRows  = Recordset1_numRows + Repeat1__numRows

' 3... 2... 1... lift-off \o/
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF)) 
    
    'response.write("<!-- " & Recordset1.Fields.Item("new_price").Value & "-->")
    'response.write("<!-- " & Recordset1.Fields.Item("sku").Value & "-->")
    
    pSmallImageUrl  = Recordset1.Fields.Item("smallImageUrl").Value
    pCatId          = Recordset1.Fields.Item("catid").Value
    pProductId      = Recordset1.Fields.Item("idproduct").Value
    pBrandName      = Recordset1.Fields.Item("brandname").Value
    pDesc           = Recordset1.Fields.Item("description").Value
    pPrice          = round(Recordset1.Fields.Item("new_price").Value, 2)
    pPartnumber     = Recordset1.Fields.Item("sku").Value
%>
    <!-- blah blah veel HTML code eromheen -->
    <%= pCatId %>
    <%= pProductId %>
    <%= pSmallImageUrl %>
    <%= pBrandName %>
    <%= pDesc %>
    <%= pPrice %>
    <%= pPartnumber %>
    <!-- blah blah veel HTML code eromheen -->

<% 
    Repeat1__index   = Repeat1__index+1
    Repeat1__numRows = Repeat1__numRows-1
    Recordset1.MoveNext()
Wend
%>


En dit is de view die daarbij hoort:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT TOP 100  products.idProduct, 
                products.description, 
                products.price * 0.01 * categories.custom_percentage + products.price AS new_price,
                products.smallImageUrl, 
                products.sku, 
                products.catid, 
                brands.brandname
FROM            products 
LEFT OUTER JOIN brands 
ON              products.idbrand        = Brands.IdBrand 
INNER JOIN      categories
ON              products.catid          = categories.idCategory
WHERE          (products.active         = - 1) AND 
               (products.removed        = 0)
ORDER BY        brands.brandName        ASC


Wat is nou het gekke? Dat als ik het veld new_price wil printen, er niets geprint wordt (pPrice). Hetzelfde geldt voor het veld sku (pPartnumber). Echter, als ik de comment die voor eerste response.write weghaal, dan zit er opeens wél een waarde in dat veld. Nog steeds niet in pPartnumer.
Als ik echter de tweede response.write uncomment, dan wordt de prijs weer leeg en ook smallImageUrl.

Ik snap er werkelijk waar helemaal niks van.. heeft iemand enig idee waar dit door kan komen?

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Zitten er (N)TEXT of IMAGE velden tussen ?

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

ik heb eens iets soortgelijks meegemaakt, probeer eens

trim(round(Recordset1.Fields.Item("new_price").Value, 2))

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 14:37

Pelle

🚴‍♂️

Topicstarter
P_de_B schreef op 24 maart 2004 @ 15:40:
Zitten er (N)TEXT of IMAGE velden tussen ?
Dit zijn de field-types:
code:
1
2
3
4
5
6
7
8
products.idProduct              int(4)
products.description            nvarchar(4000)
products.price                  float(8)
products.smallImageUrl          nvarchar(255)
products.sku                    nvarchar(100)
products.catid                  int(4)
brands.brandname                nvarchar(255)
categories.custom_percentage    int(4)


/edit
Er is nog een ander veld wat ik wel select maar niet hoef te tonen, en dat is een ntext(16).

[ Voor 9% gewijzigd door Pelle op 24-03-2004 15:55 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
/edit
Er is nog een ander veld wat ik wel select maar niet hoef te tonen, en dat is een ntext(16).
aha, dat is het probleem waarschijnlijk. Zorg dat je dat veld als laatste in je SELECT statement ophaalt, dus niet SELECT * doen, maar

code:
1
SELECT iProduct, [..], NTEXTVeld FROM


Dit is een bekend probleem met ADODB recordsets en memo(access) of ntext velden. Dus het betreffende veld helemaal niet, of als laatste!

Zie ook: http://www.aspfaqs.com/aspfaqs/ShowFAQ.asp?FAQID=80

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 14:37

Pelle

🚴‍♂️

Topicstarter
Whoa, daar zit ik me de hele dag blind op te staren.. ik dacht al dat ik gek geworden was, maar het blijkt gewoon daadwerkelijk een known bug te zijn. Thanks! :*
Pagina: 1