2017-02-27 1 views
1

S'il vous plaît voir mes photos. J'ai magasin.Et je veux rechercher (filtre) dans mon magasin. « Hrubka est en anglais "épaisseur"Comment utiliser les instructions SQL pour BETWEEN?

Ce code fonctionne pour moi:

  using (SqlDataAdapter dr = new SqlDataAdapter(" select * from tab_sklad where SMENA LIKE '%" + txt_smena_sklad_filter.Text + 
       "%'and DATUM LIKE '%" + txt_datum_sklad_filter.Text + 
       "%'and DODAVATEL LIKE '%" + cmb_firma_sklad_filter.Text + 
       "%'and CISLO_PALETY LIKE '%" + txt_paleta_sklad_filter.Text + 
       "%'and HRUBKA LIKE '%" + txt_hrubka_sklad_filter.Text + 
       "%'and KVALITA LIKE '%" + cmb_kvalita_sklad_filter.Text + 
       "%'and DRUH LIKE '%" + cmb_druh_sklad_filter.Text + 

       "%'", cn)) 
      { 

mais je veux ajouter la recherche "de à": colonne "H"

EXEMPLE:

entre

à partir de 40 à 50 Image

printscreen mycode

enter image description hereenter image description here

+0

"ne fonctionne pas" est-ce pas une description du problème. Est-ce qu'il y a une erreur? Quel est le message d'erreur? Est-ce qu'il renvoie des résultats inattendus? Qu'attendez-vous? Que retourne-t-il réellement? Montrer quelques exemples de données. – HoneyBadger

+0

Môj príkaz SQL je zle, chcem ciciak dáta v údajová mriežka textboxs. S'il vous plaît voir mes photos. –

Répondre

3

En général, lorsque vous construisez des requêtes, vous devez imprimer la requête. Ensuite, l'erreur est probablement évidente.

Avant même de continuer, je tiens également à souligner que vous devriez utiliser des requêtes paramétrées. Cela n'a rien à voir avec votre problème, mais c'est la meilleure pratique.

Votre dernière condition est:

HRUBKA BETWEEN VALUES'%" + txt_sklad_od.Text "%'AND'% " + txt_sklad_do.Text+"'" 

Vous utilisez des signes de pourcentage dans les valeurs de comparaison et que vous avez le mot-clé VALUES dans un endroit inapproprié. Je soupçonne que vous avez l'intention d'une sorte de wild-carding, comme avec LIKE, mais ce n'est pas comment cela fonctionne. Pour la structure de votre requête en cours vous enlever les signes pour cent:

HRUBKA BETWEEN '" + txt_sklad_od.Text "' AND '" + txt_sklad_do.Text+"'" 
+0

J'ai ajouté la photo suivante, ma déclaration SQL est erronée. –

+0

En premier lieu, quelle est l'utilisation de wildcarding en utilisant BETWEEN? Cela me semble omnieux, n'est-ce pas seulement moi? Plus, en utilisant un TextBox comme ça ... Injection SQL repéré! – Lostblue

+0

J'ai ajouté des images. –

0

En utilisant @Gordon Linoff réponse que je souhaite ajouter quelques modifications à votre code.

Votre code n'est pas "sécurité d'injection" (check SQL Injection here). Je ne comprends pas non plus l'utilisation de BETWEEN ici ... Est-ce que HRUBKA est un champ numérique? (Int, flotteur, numérique, etc.)

Si HRUBKA est un nombre ce serait:

double sklad_od = 0, sklad_do = 0; 
using (SqlDataAdapter dr = new SqlDataAdapter(" select * from tab_sklad " 
     "where SMENA LIKE '%" + String.IsNullOrEmpty(txt_smena_sklad_filter.Text) ? "'" : (txt_smena_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and DATUM LIKE '%" + String.IsNullOrEmpty(txt_datum_sklad_filter.Text) ? "'" : (txt_datum_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and DODAVATEL LIKE '%" + String.IsNullOrEmpty(cmb_firma_sklad_filter.Text) ? "'" : (cmb_firma_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and CISLO_PALETY LIKE '%" + String.IsNullOrEmpty(txt_paleta_sklad_filter.Text) ? "'" : (txt_paleta_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and HRUBKA LIKE '%" + String.IsNullOrEmpty(txt_hrubka_sklad_filter.Text) ? "'" : (txt_hrubka_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and KVALITA LIKE '%" + String.IsNullOrEmpty(cmb_kvalita_sklad_filter.Text) ? "'" : (cmb_kvalita_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and DRUH LIKE '%" + String.IsNullOrEmpty(cmb_druh_sklad_filter.Text) ? "'" : (cmb_druh_sklad_filter.Text.Replace("'", "''") + "%'") + 
     (double.TryParse(txt_sklad_od.Text, out sklad_od) && double.TryParse(txt_sklad_do.Text, out sklad_do) ? (" and HRUBKA BETWEEN " + sklad_od + " AND " + sklad_do) : "") + 
     " ", cn)) 

Sinon:

using (SqlDataAdapter dr = new SqlDataAdapter(" select * from tab_sklad " 
     "where SMENA LIKE '%" + String.IsNullOrEmpty(txt_smena_sklad_filter.Text) ? "'" : (txt_smena_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and DATUM LIKE '%" + String.IsNullOrEmpty(txt_datum_sklad_filter.Text) ? "'" : (txt_datum_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and DODAVATEL LIKE '%" + String.IsNullOrEmpty(cmb_firma_sklad_filter.Text) ? "'" : (cmb_firma_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and CISLO_PALETY LIKE '%" + String.IsNullOrEmpty(txt_paleta_sklad_filter.Text) ? "'" : (txt_paleta_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and HRUBKA LIKE '%" + String.IsNullOrEmpty(txt_hrubka_sklad_filter.Text) ? "'" : (txt_hrubka_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and KVALITA LIKE '%" + String.IsNullOrEmpty(cmb_kvalita_sklad_filter.Text) ? "'" : (cmb_kvalita_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and DRUH LIKE '%" + String.IsNullOrEmpty(cmb_druh_sklad_filter.Text) ? "'" : (cmb_druh_sklad_filter.Text.Replace("'", "''") + "%'") + 
     " and HRUBKA LIKE '%" + String.IsNullOrEmpty(txt_sklad_do.Text) ? "'" : (txt_sklad_do.Text.Replace("'", "''") + "%'") + 
     " ", cn)) 
+0

J'ai ajouté des images. –