Visualizzazione dei risultati da 1 a 6 su 6

Discussione: recordset disconnesso

  1. #1
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667

    recordset disconnesso

    prima che divento scemo:

    questa è il codice x creare un recordset disconnesso:

    codice:
    Const adEmpty = 0
    Const adTinyInt = 16
    Const adSmallInt = 2
    Const adInteger = 3
    Const adBigInt = 20
    Const adUnsignedTinyInt = 17
    Const adUnsignedSmallInt = 18
    Const adUnsignedInt = 19
    Const adUnsignedBigInt = 21
    Const adSingle = 4
    Const adDouble = 5
    Const adCurrency = 6
    Const adDecimal = 14
    Const adNumeric = 131
    Const adBoolean = 11
    Const adError = 10
    Const adUserDefined = 132
    Const adVariant = 12
    Const adIDispatch = 9
    Const adIUnknown = 13
    Const adGUID = 72
    Const adDate = 7
    Const adDBDate = 133
    Const adDBTime = 134
    Const adDBTimeStamp = 135
    Const adBSTR = 8
    Const adChar = 129
    Const adVarChar = 200
    Const adLongVarChar = 201
    Const adWChar = 130
    Const adVarWChar = 202
    Const adLongVarWChar = 203
    Const adBinary = 128
    Const adVarBinary = 204
    Const adLongVarBinary = 205
    Const adChapter = 136
    Const adFileTime = 64
    Const adPropVariant = 138
    Const adVarNumeric = 139
    Const adArray = &H2000
    
    
    Set rs = Server.CreateObject("ADODB.Recordset")
    Rs.Fields.Append "ID",adInteger,-1
    Rs.Fields.Append "Nome",adVarChar,255
    Rs.Fields.Append "Cognome",adVarChar,255
    Rs.Open
    
    'inserisco i dati
    Rs.AddNew
    Rs("ID")=1
    Rs("Nome")="Pippo"
    Rs("Cognome") = "Paperino"
    Rs.Update()
    
    Rs.Sort = "Nome Desc"'Ordinamento
    If Rs.RecordCount > 0 then Rs.MoveFirst()
    
    While Not Rs.EOF
    Response.Write Rs("ID") & " " & Rs("Nome") & " " & Rs("Cognome") &"
    "
    Rs.MoveNext
    Wend 
    
    Rs.Close()
    Set Rs = Nothing
    fin qui tutto ok,ma se invece di crearlo "da nuovo" inserendo runtime i valori,io volessi che il recordset disconnesso contenga il risultato di una precedente query su un db...come caspita faccio?

  2. #2
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    In che senso?
    Vuoi un recordset disconnesso preso da una query? E che te ne fai?

  3. #3
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667
    il senso è quello...in pratica quello che ci si fa quando si usa il metedo getrows,che "mette" il recordest in un array.Ho sempre fatto così fin ora...ma nel caso particolare mi servirebberò le funzionalità di sort e filter...che l'array non ha,almeno non con la stessa efficenza

  4. #4
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    Una volta aperta la query puoi usare i metodi rs.Sort e Rs.Filter.
    Naturalmente devi impostare i cursori corretti (Rs.Open Sql,Conn,3,3)
    Se poi devi fare delle operazioni di cancellazione sul recordset e non sul db allora lo puoi aprire in modalità batch(Rs.Open Sql,Conn,3,4)

  5. #5
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667
    be sulla query direttamente lo so che posso ordinarla e filtrarla...io volevo però disconnetermi dal db perchè devo farci diversi lavori sopra...tra cui ordinamenti vari,e sposatementi avanti e indietro....(un report un pò particolare) x questo utilizzavo getrows...quindi in questo caso volevo utilizzare un record disconnesso con un array un pò + efficente i cui dati provenissero da una query...però se ti sembra assurdo...magari è ora che vado in vacanza

  6. #6
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    Se hai necesssità di cambiare i valori o cancellarli senza avere ripercussioni sul db allora aprilo in modalità batch.

    Altreimenti se devi fare spostamenti avanti/indietro, filtri e ordinamente, allora puoi aprirlo con i cursori 3,3

    C'è un modo di rendere una query completamente disconnessa, ma la modalità batch è sufficiente a fare qualsiasi cosa senza ripercussioni sul db.

    Comunque questa è la funzione per clonare un recordset.
    Aprilo con Conn.Execute che è la modalità più veloce e poi fai

    codice:
    Set RsDisconnesso = CloneRecordset(Rs)
    codice:
    	Function CloneRecordset(ByRef Source)
    	Dim oRsClone,Stream
    		Set Stream = Server.CreateObject("ADODB.Stream")
    		Stream.Type=1
    		Source.Save Stream
    		Set oRsClone = Server.CreateObject("ADODB.Recordset")
    		oRsClone.Open Stream,,3 ,4
    		Set CloneRecordset = oRsClone
    		Set oRsClone = Nothing
    		Stream.Close
    		Set Stream = Nothing
    	end Function
    Come vedi però non è sempre vantaggioso clonare un recordset.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.