Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Access: query che funzionava con connessione ODBC non va con OLE-db

    Ciao a tutti,

    non riesco a venirne fuori. Ho un sito basato su DB access che fino a ieri andava perfettamente, per collegarmi usavo questa stringa:

    Codice PHP:
    SET connDB Server.CreateObject("ADODB.Connection")
        
    Dbfile Server.MapPath("/" dirDB ) & "\" & nomeDB & ".mdb"
        connDB.Open "
    Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Dbfile & ";
    Il provider, credo per un cambio di impostazioni, consiglia di usare la connessione OLEDB:
    Codice PHP:
    SET connDB Server.CreateObject("ADODB.Connection")
        
    Dbfile Server.MapPath("/" dirDB ) & "\" & nomeDB & ".mdb"
        connDB.Open "
    Provider Microsoft.Jet.OLEDB.4.0;Data Source " & Dbfile & ";Persist Security Info False
    Con questa connessione adesso mezze query non vanno più, cioè non danno nessun risultato ne in locale ne in rete.
    p.s le stesse query funzionano perfettamente con la vecchia connessione e su SQLserver (ho realizzato un CMS che a seconda del progetto utilizza Access o SQLserver)

    questa è una di quelle:
    Codice PHP:
    SELECT v.url_link,v.titolo_alt_it,v.titolo_it,v.testo_it,v.foto1,v.accessorapido,v.idclasse,v.titolopag,v.valore_check,v.tipoinput,v.id_tipoinput,v.ordine FROM (vocimenu AS v INNER JOIN vocimenu_cat AS vc ON v.id_vocimenu_cat vc.id_vocimenu_catWHERE v.online=AND vc.id_vocimenu_cat 2 ORDER BY v.ordine ASC 
    Quelle invece più basilari tipo questa funzionano:
    Codice PHP:
    SELECT id_news_cat,categoria_it,ordine FROM news_cat 
    Qualche idea?
    grazie

  2. #2
    1. prova a togliere le parentesi dopo FROM e prima di WHERE
    2. per caso hai degli ON ERROR?

  3. #3
    Grazie per la risposta.

    nello script non c'è nessun ON ERROR.
    ho provato a togliere le parentesi, ma nulla cambia, ma ho capito il problema!
    Con la connessione OLEDB non riconosce il valore 1 come TRUE nella verifica nei campi booleani WHERE v.online=1 , mettendo WHERE v.online=true invece funziona

  4. #4
    in effetti il valore booleano True a volte costituisce un problema, perché in base al db può valere 1, -1 o - appunto "true". Per avere un approccio sicuro potresti usare "diverso da zero"! quello almeno è sempre uguale

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.