Query dinamica

di il
7 risposte

Query dinamica

Ciao a tutti,
il mio problema è che non so proprio come scrivere la seguente query per visionare il risultato in una tabella con access:

Set catRS = Server.CreateObject( "ADODB.Recordset" )
catRS.ActiveConnection = Con
sqlString = "SELECT DISTINCT id_ditta FROM aziende"
sqlString = sqlString & "WHERE inviofax is Not Null"
catRS.Open sqlString

WHILE NOT catRS.EOF

cat = catRS("id_ditta")

sqlString = "SELECT ditta, telefono FROM aziende WHERE id_ditta<>" &cat
Set Rs = Con.Execute(sqlString)
while NOT Rs.EOF

ditta = Rs("ditta")
telefono = RS("telefono")

Rs.MoveNext
WEND

catRS.MoveNext
WEND

catRS.Close

Con.close

Infatti ho bisogno di una tabella che mi mostri tale rusultato ma come si scrive e si scrive sempre
in "VISUALIZZAZIONE SQL" ?

Grazie per l'attenzione.

7 Risposte

  • Re: Query dinamica

    Porta pazienza... ma dove hai letto di usare LateBinding per istanziare l'oggetto ADO....?
    Perchè poi con Access usi ADO...?

    Il codice che hai scritto è assolutamente da ELIMINARE, contiene erorri concettuali(quelli di prima) incorreggibili, ed errori strutturali... quello del ciclo sul 2° Recordset al fine di visualizzare i dati...
    che proprio direi che con access non ha nulla a che fare...!

    Sembra, dico sembra, che tu abbia copiato quel codice da qualcuno che ha sviluppato per Excel o per VB6(in malo modo poi)...

    Spiega cosa devi fare abbandonando quello che hai fatto, partendo dal fatto che con Access per visualizzare i dati basta usare una Maschera ed associare l'origine Record, si fa tutto con l'Autocomposizione...
  • Re: Query dinamica

    Ciao @Alex e grazie per l'interessamento.
    Avrei bisogno di una tabella access che mi definisca i nomi, etc di tutte le aziende che non hanno ricevuto il fax.
    Esempio:
    id id_ditta ditta telefono inviofax
    1 2 a 1234
    2 2 a 2345 10/10/12
    3 3 b 3456
    4 4 c 5678
    5 4 c 7890
    6 5 d 0123 10/10/12

    Risultato Query :
    1 2 a 1234
    3 3 b 3456
    4 4 c 5678
    5 4 c 7890

    Non so cosa sia LateBinding
    Non so proprio come devo fare in access!
    Saluti
    bertolino
  • Re: Query dinamica

    Ho paura a darti una risposta, in quanto emerge(almeno io ho questa impressione) che tu non abbia la minima idea di come funziona Access...!

    L'esposto di cui hai bisogno si ottiene senza NEMMENO una riga di codice... usando le Query e le Maschere di Access conl'autocomposizione, e questo è il motivo chemi frena nel fornirti una soluzione.

    Prova prima di tutto a capire come Access consente di usare i dati e di come si devono VISUALIZZARE...., cerca di imparare almeno le BASI perchè altrimenti avere uno scambio diventa impossibile.

    L'unica cosa che di certo riconfermo è che quel codice(VBS) che hai scritto va BUTTATO.
  • Re: Query dinamica

    Caro @Alex ti ringrazio dell interessamento ma non credo tu abbia capito il mio problema
    C e qualcuno che possa aiutarmi?

    Grazie per ogni suggerimento
  • Re: Query dinamica

    Ho letto il 3d e mi sa che non ho capito neanche io che ti serve.

    Non spieghi ad esempio perchè approcci con VBScript a un problema che puoi risolvere con gli strumenti di Access (Maschere)
  • Re: Query dinamica

    Ciao,
    se vuoi visualizzare i dati estratti dalla tabella aziende dove “inviofax is not null” o utilizzi il tuo script …. E inserisci i valori estratti in una nuova tabella. Utilizza il seguente codice da inserire dopo telefono = RS("telefono"):
    
       Set dbs = OpenDatabase("nomedatabase.mdb")
    dbs.Execute " INSERT INTO Tabella (ditta, venduto)VALUES (‘“&ditta &”’, “&venduto &”);”
    
    oppure semplicemente esegui una query come questa
    	SELECT ditta, telefono FROM aziende WHERE inviofax is Not Null
    Spero di aver capito la tua richiesta, altrimenti dacci altre info
  • Re: Query dinamica

    Ciao a tutti,
    cercavo di creare un subroutine in Vba che mi facesse il lavoro per modificarla velocemente modificando il codice e senza ricreare ogni volta tutto da capo quando lavoro su tabelle diverse.
    Ma siccome non le ho fatte mai non sapevo neanche dove scriverle.
    Alla fine ho ripiegato su vbscript che ho studiato tanto tempo fa, che uso per fare un loop estrapolare i numeri che "hanno" id_ditta Not Null e li cancello dalla tabella.
    Così mi trovo soltanto quelli che mi rimangono da contattare.
    Allego il codice mai potesse servire a qualcuno, al posto di scrivere a video i nomi basterà inserire la Sql che li cancella dalla tabella passandola come variabile.
    <%
    Server.ScriptTimeout = 90

    database = Request("database")

    Set Con=Server.CreateObject("ADODB.Connection")
    Con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath(database)


    TAB1 = Request("tab1")
    if TAB1 = "" then
    Response.Write "Inserisci la tabella Primaria"
    Response.end
    end If

    Set catRS = Server.CreateObject( "ADODB.Recordset" )
    catRS.ActiveConnection = Con
    Set catRS = Server.CreateObject( "ADODB.Recordset" )
    catRS.ActiveConnection = Con
    sqlString = "SELECT id_ditta FROM " & TAB1 & " "
    sqlString = sqlString & "WHERE inviofax is Not Null"
    catRS.Open sqlString

    WHILE NOT catRS.EOF
    cat = catRS("id_ditta")


    Set prodRS = Server.CreateObject( "ADODB.Recordset" )
    prodRS.ActiveConnection = Con

    sqlString = "SELECT id_ditta, ditta, telefono " &_
    "FROM " & TAB1 & " WHERE id_ditta LIKE '" & cat & "'"
    prodRS.Open sqlString

    WHILE NOT prodRS.EOF

    id_ditta = prodRS("id_ditta")
    ditta = prodRS("ditta")
    telefono = prodRS("telefono")

    Response.write id_ditta & " - "
    Response.write ditta & " - "
    Response.write telefono & "<br>"

    prodRS.MoveNext
    WEND

    catRS.MoveNext
    WEND

    catRS.Close
    %>
    Grazie a tutti
    Saluti
    bertolino
Devi accedere o registrarti per scrivere nel forum
7 risposte