Just nu i M3-nätverket
Jump to content

Procedur returnerar inget recordset, hur tar jag reda på det?


FiEnD

Recommended Posts

Hej

 

Har en procedur som skall hämta ut records från en tabell, men om det inte finns records så returnerar den inget recordset. Det hela är lite speciellt skrivet och kör man SQL-koden i Query Analyzer för MSSQL så blir det enbart "The command(s) completed successfully."

Dvs, inget recordset returneras.

 

Detta fel blir det på ASPsidan eftersom kontrollen om det finns några poster i recordsetet felar (finns inget recordset ens).

 

"ADODB.Recordset fel '800a0e78'

 

Åtgärden är inte tillåten när objektet är stängt. "

 

Hur kan man detecta om ett recordset verkligen är ett recordset?

rs.eof fungerar ju inte och rs.state har jag provat, men det verkar inte funka..

 

Tips mottages gärna

 

Mvh Fredrik

 

Link to comment
Share on other sites

 

Det hela är lite speciellt skrivet

 

Visa koden så blir det lättare att hjälpa till.

 

Dvs, inget recordset returneras.

 

Du menar ett tomt recordset, eller?

 

tgärden är inte tillåten när objektet är stängt. "

 

Även här underlättar det om du visa koden.

 

 

 

Link to comment
Share on other sites

Såhär ser min ASP ut:

call dbconn.MakeRecordset(rsThread,Exestring)

 

Såhär ser det ut för MakeRecordset:

'** open up a recordset.
public function MakeRecordset(ByRef rs, querystring)
	'** safety-check.
	if len(querystring) < 10 then
		Response.Write("WHERES MY QUERYSTRING? <br />") & vbCrLf
		exit function
	end if
	'** connection-check.
	if cint(dbocount) = 0 then
		call MakeConnection(ConnString)
	end if
	dbo(dbocount).rscount = (dbo(dbocount).rscount + 1)
	dbo(dbocount).rscount_peak = dbo(dbocount).rscount
	redim preserve recordset(dbo(dbocount).rscount)
	set recordset(dbo(dbocount).rscount) = new RecordsetObject
	set recordset(dbo(dbocount).rscount).result = dbo(dbocount).connection.execute(querystring)
	recordset(dbo(dbocount).rscount).streaming = true
	call dbo(dbocount).add(recordset(dbo(dbocount).rscount))
	set rs = dbo(dbocount).recordset(dbo(dbocount).rscount).result
end function

 

Behövs det mer kod för att förklara? :)

Övriga delar i connection-class?

proceduren?

 

Mvh Fredrik

 

Link to comment
Share on other sites

Koden för proceduren

 

create proc spr_get_ForumThreadByForum
(
  @ForumID int,
  @p_page_size int,
  @p_page int
)
as
begin
  set nocount on
  declare @p_total_rows_num int 
  declare @p_first_selecting_row_num int 
  declare @p_first_selecting_row_id int

  select @p_total_rows_num = count(ForumThreadID) from view_get_ForumThread where ForumID = @ForumID
  select @p_first_selecting_row_num = (@p_page - 1) * @p_page_size + 1

  if (@p_first_selecting_row_num <= @p_total_rows_num)
  begin
     set nocount on
     set rowcount @p_first_selecting_row_num
     select @p_first_selecting_row_id = ForumThreadID 
     from view_get_ForumThread where ForumID = @ForumID
     order by CreateDate DESC

     set rowcount @p_page_size
     SELECT * FROM 
     view_get_ForumThread 
     WHERE 
     ForumThreadID IN 
       (Select ForumThreadID from view_get_ForumThread where ForumID = @ForumID) 
     AND
     ForumThreadID <= @p_first_selecting_row_id  
     order by CreateDate DESC
  end
  --set nocount off
end

 

Link to comment
Share on other sites

Detta fungerar dock.

 

Antar det är något fuckup med connectionklassen. Den verkar inte vara så bra skriven som jag förstår det :/

 

ConnString = [GRÅ]"xxxxxxxxxxxx"[/GRÅ]

[color="#0000ff"]Set[/color] Myconn = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Connection"[/GRÅ])
MyConn.open ConnString

[color="#0000ff"]Set[/color] rs = myconn.[color="#0000ff"]Execute[/color]([GRÅ]"Exec spr_get_ForumThreadByForum 14, 10, 1"[/GRÅ])


  [color="#0000ff"]If[/color] rs.State <> [GRÅ]"0"[/GRÅ] [color="#0000ff"]Then[/color]

[color="#0000ff"]If[/color] [color="#0000ff"]Not[/color] rs.eof [color="#0000ff"]Then[/color]

[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]



  [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

rs.close
[color="#0000ff"]Set[/color] rs = [color="#0000ff"]Nothing[/color]

Myconn.close
[color="#0000ff"]Set[/color] Myconn = [color="#0000ff"]Nothing[/color]

 

[inlägget ändrat 2007-01-18 21:13:30 av FiEnD]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...