Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    451

    [vb6] Tipi di dati non corrispondenti nell'espressione criterio.

    mi spiegate il perchè se uso questo codice:

    codice:
      rs.Open "SELECT id, data, descrizione " _
            & "FROM movimenti " _
            & "WHERE descrizione = 'Vendita' " _
            & "ORDER BY data ASC", cn, 1
    funzione, invece se aggiungo "AND data > '01/03/2010'"

    codice:
      rs.Open "SELECT id, data, descrizione " _
            & "FROM movimenti " _
            & "WHERE descrizione = 'Vendita' " _
            & "AND data > '01/03/2010' " _
            & "ORDER BY data ASC", cn, 1
    mi restituisce:

    Tipi di dati non corrispondenti nell'espressione criterio.

    ecco il codice completo:

    codice:
      Set cn = New ADODB.Connection
      Set rs = New ADODB.Recordset
    
      cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.path & "\db.mdb;Persist Security Info=False"
      rs.Open "SELECT id, data, descrizione " _
            & "FROM movimenti " _
            & "WHERE descrizione = 'Vendita' " _
            & "AND data > '01/03/2010' " _
            & "ORDER BY data ASC", cn, 1

  2. #2
    Quando indi un filtro per data non puoi indicarlo tra gli apici perché così stai dando un valore stringa; per definire una data devi includerla tra i cancelletti (& "AND data > #01/03/2010# " _
    ) mentre se ometti tutto il valore sarà definito come numerico.

    A presto.

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da Red Storm
    Quando indi un filtro per data non puoi indicarlo tra gli apici perché così stai dando un valore stringa; per definire una data devi includerla tra i cancelletti (& "AND data > #01/03/2010# " _
    ) mentre se ometti tutto il valore sarà definito come numerico.
    Vero, ma non sempre.
    In questo caso lo è perchè Access richiede i cancelletti per le date, mentre se il database fosse SQLServer, Oracle, DB2, ... si usano gli apici.

    Ma questi problemi potrebbero essere evitati.
    Ne approfitto per continuare la mia campagna a favore dell'uso di Command e Parametri, e mi stupisco che siano così poco usati dato che invece sono caldamente raccomandati e che semplificano notevolmente evitando problemi come questo.
    Non più problemi di formattazione, cancelletti, apici, formato date americano, ecc. ecc. ecc.

    in un mio articolo spiego dettagliatamente i problemi, spesso misconosciuti, nel lavorare con le date:
    ADO, Parametri ed affini
    http://nuke.vbcorner.net/Articoli/VB...5/Default.aspx


    Qualche altro link utile, anzi indispensabile:

    Database - Why should I use Parameters instead of putting values into my SQL string?
    http://www.vbforums.com/showthread.php?t=548787

    Una piaga chiamata SQL Injection
    http://msdn.microsoft.com/it-it/library/cc185099.aspx

    Query parametriche (Command)
    http://en.wikipedia.org/wiki/SQL_inj...zed_statements

    SQL Injection
    http://it.wikipedia.org/wiki/SQL_injection

    Tecniche: SQL Injection
    http://sicurezza.html.it/articoli/le...sql-injection/


  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    451
    grazie per l'aiuto... di solito uso mysql e non ho questi problemi!!!

    grazie tante.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    451
    niente non funziona

    ho provato a seguire anche il tutorial di gibra ma nulla.

    Edit: no scusate funziona... ero io che sbagliavo!!!

    Grazie 1000 per il vostro aiuto e ottimo tutorial

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.