Pagina 1 di 8 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 77
  1. #1
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518

    Utilizzare le funzioni di access da ASP

    ciao

    mi connetto ad un db access tramite questa stringa

    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("<path del db>") & ";Persist Security Info=False"

    e devo utilizzare una funzione di replace per una select:

    SELECT * FROM nometabella WHERE replace(campo1 + campo2, " ", "") = "rossimarioangelo"
    set rs = cn.Execute(sSQL)

    sostanzialmente devo eliminare gli spazi dai due campi!!

    ma non me lo fa fare...
    da qualche parte ho letto che la replace non può essere utilizzata direttamente nelle query da ASP, e come soluzione proponevano di creare un modulo VB nel database, inserirvi la funzione e poi chiamare quella:

    Function ReplaceQ(pString1 As String, pFind As String, pReplacement As String) As String

    ReplaceQ = Replace(pString1, pFind, pReplacement)

    End Function

    e poi la stringa diventa:
    SELECT * FROM nometabella WHERE ReplaceQ(campo1 + campo2, " ", "") = "rossimarioangelo"

    ma mi dice comunque "funzione non riconosciuta"

    idee? soluzioni?
    grazie
    Giovanni
    Cacca!

  2. #2
    Se hai creato una funzione come quella che hai postato, la sintassi da usare è

    codice:
    sql = "select * from nometabella where nomecampo ='"&var&"'"
    dove

    var = ReplaceQ(a, b, c)

    con a, b, c parametri della funzione ReplaceQ
    e il campo "nomecampo" è testo
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  3. #3
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518
    Originariamente inviato da teorema55
    Se hai creato una funzione come quella che hai postato, la sintassi da usare è

    codice:
    sql = "select * from nometabella where nomecampo ='"&var&"'"
    dove

    var = ReplaceQ(a, b, c)

    con a, b, c parametri della funzione ReplaceQ
    e il campo "nomecampo" è testo
    no forse non mi sono spiegato bene.. la funzione è in un modulo DENTRO il database, mentre la query è nella pagina ASP! la funzione devo chiamarla sul valore dei campi che devo selezionare, e che nella pagina non conosco perchè devo ancora eseguire la query!
    Cacca!

  4. #4
    Ahhhhhhhhhhhhhhhhhhhhh

    e allora la logica che hai usato è quella giusta, lasciami fare una prova, credo che sia:

    codice:
    SELECT * FROM nometabella WHERE "&replace(campo1&campo2, " ", "")&" = "rossimarioangelo""
    ashpett 'nu mument.......
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  5. #5
    Sì, funza, devi solo usare un apice singolo anzichè doppio per il valore del campo, cioè

    codice:
    SELECT * FROM nometabella WHERE "&replace(campo1&campo2, " ", "")&" = 'rossimarioangelo'"
    così va come un treno.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  6. #6
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518
    no non ci siamo capiti

    SELECT * FROM nometabella WHERE "&replace(campo1&campo2, " ", "")&" = 'rossimarioangelo'"

    campo1 e campo2 sono campi del database, che devo estrarre proprio con quella query!

    dovrebbe essere piuttosto una cosa del genere

    sSQL = "SELECT * FROM nometabella WHERE replace(campo1&campo2, ' ', '') = 'rossimarioangelo'"

    ma non funziona

    mi dà:
    Tipo di errore:
    Microsoft JET Database Engine (0x80040E14)
    Funzione 'Replace' non definita nell'espressione.

    e mi dà lo stesso errore se utilizzo invece mia funzione personalizzata che ho inserito in un modulo VB nel database

    la stessa query, se copio l'sql e lo eseguo direttamente dentro access, funziona!
    Cacca!

  7. #7
    No, allora non ci siamo capiti: spiega meglio per favore

    - quali sono i campi
    - cosa vuoi fare esattamente (estrarre i record in base a che condizioni, fai un esempio)

    perchè con l'ultima spiegazione ho capito ancora meno, come fai a dire

    "where nomecognome = rossimario"

    se nel database ci sono i campi nome e cognome..........non va bene

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  8. #8
    Forse intendi

    codice:
    sql = "select all from tabella where campo1='rossi' and campo2='marioangelo'"
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  9. #9
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518
    allora:

    il mio scopo è estrarre i record la cui concatenazione del cognome del nome senza spazi è uguale alla stringa che gli passo. il problema è quando nel campo nome ci sono degli spazi, perchè per eliminarli avrei bisogno di una replace dello ' ' (spazio) con un '' (stringa vuota), ma a livello di database!

    i miei record sono per esempio:
    cognome_______nome
    ----------------
    rossi_________mario angelo
    verdi_________giuseppe
    bianchi_______marco

    (ho usato _ per allineare.. sono 2 campi diversi!)

    se l'utente mi inserisce 'rossimarioangelo' io devo estrarre il primo record!

    è chiaro il problema?
    Cacca!

  10. #10
    Prova

    codice:
    sql = "select all from tabella where "&campo1.value&campo2.value&"='rossimarioangelo'"

    eh, era così difficile?





    Adesso la provo anch'io...
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

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.