Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα με την εκτέλεση ενός SQL Query...

Îåêßíçóå áðü ôï ìÝëïò Q-apprentice. Τελευταία δημοσίευση από το μέλος KelMan στις 23-06-2010, 12:25. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  02-06-2010, 15:33 58928

    Confused [*-)] Πρόβλημα με την εκτέλεση ενός SQL Query...

    Καλησπέρα παιδιά...αντιμετωπίζω το εξής θέμα με ένα query. Όταν αυτό εκτελείται φέρνει όλα τα records από ένα view το οποίο έχει μια flag column για να γνωρίζω αν είναι "ανοιχτό ή κλειστό".  Το συγκεκριμένο query το έχω χρησιμοποιώ και για αναζήτηση records από τον πίνακα. το query είναι το κάτωθι...
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
            sqlComm = "SELECT " _
            & "dbo.[50_Tickets].CaseID AS [Μοναδικός Αριθμός], " _
            & "dbo.[50_Tickets].OrderID AS [Κωδικός Εντολής], " _
            & "dbo.[50_Tickets].Date AS [Ημερομηνία καταχώρησης], " _
            & "dbo.[50_Tickets].PEL_PRO_CODE AS [Κωδικός Πελάτη], " _
            & "dbo.[10_Clients].EPONYM AS [Επωνυμία Πελάτη], " _
            & "dbo.[20_Users].LName AS [Επώνυμο χρήστη], " _
            & "dbo.[20_Users].FName AS [Όνομα χρήστη], " _
            & "dbo.LU_Departments.Descr AS Τμήμα, " _
            & "dbo.LU_TicketKind.Descr AS Κατηγορία, " _
            & "dbo.LU_SubCategories.Descr AS Υποκατηγορία, " _
            & "dbo.[50_Tickets].Descr AS Περιγραφή " _
                & "FROM " _
                & "dbo.[50_Tickets] " _
                    & "INNER JOIN " _
                        & "dbo.[10_Clients] ON dbo.[50_Tickets].PEL_PRO_CODE = dbo.[10_Clients].PEL_PRO_CODE " _
                            & "INNER JOIN " _
                                & "dbo.[20_Users] ON dbo.[50_Tickets].UserID = dbo.[20_Users].UserID " _
                                    & "INNER JOIN " _
                                        & "dbo.LU_Departments ON dbo.[50_Tickets].DepartmentID = dbo.LU_Departments.DepartmentID " _
                                            & "INNER JOIN " _
                                                & "dbo.LU_TicketKind ON dbo.[50_Tickets].TicketKindID = dbo.LU_TicketKind.TicketKindID " _
                                                & "AND dbo.[50_Tickets].DepartmentID = dbo.LU_TicketKind.DepartmentID " _
                                                & "AND dbo.LU_Departments.DepartmentID = dbo.LU_TicketKind.DepartmentID " _
                                                    & "LEFT OUTER JOIN " _
                                                        & "dbo.LU_SubCategories ON dbo.[50_Tickets].TicketKindID = dbo.LU_SubCategories.TicketKindID " _
                                                        & "AND dbo.[50_Tickets].SubCat = dbo.LU_SubCategories.SubCat " _
                                                        & "AND dbo.[50_Tickets].DepartmentID = dbo.LU_SubCategories.DepartmentID " _
                                                        & "WHERE " _
                                                        & "dbo.[50_Tickets].CaseID LIKE '%" & CentralScreen.SearchBox.Text & "%' OR " _
                                                        & "dbo.[50_Tickets].OrderID LIKE '%" & CentralScreen.SearchBox.Text & "%' OR " _
                                                        & "dbo.[50_Tickets].Date LIKE '%" & CentralScreen.SearchBox.Text & "%' OR " _
                                                        & "dbo.[50_Tickets].PEL_PRO_CODE LIKE '%" & CentralScreen.SearchBox.Text & "%' OR " _
                                                        & "dbo.[10_Clients].EPONYM LIKE '%" & CentralScreen.SearchBox.Text & "%' OR " _
                                                        & "dbo.[20_Users].LName LIKE '%" & CentralScreen.SearchBox.Text & "%' OR " _
                                                        & "dbo.[20_Users].FName LIKE '%" & CentralScreen.SearchBox.Text & "%' OR " _
                                                        & "dbo.LU_Departments.Descr LIKE '%" & CentralScreen.SearchBox.Text & "%' OR " _
                                                        & "dbo.LU_TicketKind.Descr LIKE '%" & CentralScreen.SearchBox.Text & "%' OR " _
                                                        & "dbo.LU_SubCategories.Descr LIKE '%" & CentralScreen.SearchBox.Text & "%' OR " _
                                                        & "dbo.[50_Tickets].Descr LIKE '%" & CentralScreen.SearchBox.Text & "%'" _
                                                        & "AND " _
                                                        & "dbo.[50_Tickets].Status = 'C' "

    τώρα αν εξαλείψω τις γραμμές από την 30 μέχρι και την 41 δουλεύει άψογα....αν όμως τις προσθέσω (που χρειάζεται) αφού θέλω να του δώσω ως κρητίριο αναζήτησης το τι έχει πληκτρολογήσει ο χρήστης στο πεδιάκι ...φέρνει όλα τα records ...τι μπορεί να έχω κάνει λάθος εδώ ? κάθε βοήθειά θα εκτιμηθεί....ευχαριστώ...


    Αντώνης Ε. Κόλλιας
  •  02-06-2010, 16:58 58929 σε απάντηση της 58928

    Απ: Πρόβλημα με την εκτέλεση ενός SQL Query...

    OK παιδιά το θέμα λύθηκε.....χρειάστηκε απλά να βάλω όλα τα OR statements μέσα σε παρένθεση και το AND clause ξεχωριστά....
    Αντώνης Ε. Κόλλιας
  •  02-06-2010, 16:59 58930 σε απάντηση της 58928

    Απ: Πρόβλημα με την εκτέλεση ενός SQL Query...

    Όταν λες όλα τα records εννοείς όλα τα records που ταιριάζουν με τα κριτήρια αναζήτησης και απλά δεν ακούει το dbo.[50_Tickets].Status = 'C', σωστά; Αν μία από τις συνθήκες αναζήτησης είναι True, τότε επειδή έχει OR όλη η συνθήκη στο WHERE θα είναι True. Δοκίμασε να βάλεις όλα τις συνθήκες για την αναζήτηση μέσα σε μία παρένθεση.

    Δηλαδή κάπως έτσι 

    ...
    WHERE
    (
    SearchCondition 1 OR
    SearchCondition 2 OR
    SearchCondition 3 OR
    ... ) AND dbo.[50_Tickets].Status = 'C'

    Edit: Με πρόλαβες... Stick out tongue

    Τάσος Καραγιάννης

    Baby debugging steps...
  •  02-06-2010, 17:05 58931 σε απάντηση της 58930

    Απ: Πρόβλημα με την εκτέλεση ενός SQL Query...

    Αντώνη, αν και σου λύθηκε το συγκεκριμένο πρόβλημα, θα πρέπει να γυρίσεις τον κώδικα σου ώστε να χρησιμοποιεί parameterized queries γιατί όπως είναι τώρα είναι πολύ επικίνδυνος για SQL Injection attacks. Ακόμα όμως κι αν οι χρήστες σου δεν έχουν ιδέα από κάτι τέτοιο, υπάρχουν πάρα πολλά πράγματα που θα μπορούσαν να γράψουν μέσα σε αυτό το textbox για να κάνουν άθελά τους το query να βγάλει exception. Αν θες περισσότερες πληροφορίες για τα parameterized queries κάνε μια αναζήτηση εδώ, το έχουμε αναφέρει το θέμα στο παρελθόν αρκετές φορές.

     


    Vir prudens non contra ventum mingit
  •  22-06-2010, 12:13 59243 σε απάντηση της 58931

    Απ: Πρόβλημα με την εκτέλεση ενός SQL Query...

    σε ευχαριστώ πολύ...μια ερώτηση θέλω να κάνω...επειδή δεν έχω ιδέα από parametrized queries, μήπως μπορείς να μου δώσεις κάποιο link για να  να διαβάσω κάτι σχετικό ?

    Αντώνης Ε. Κόλλιας
  •  23-06-2010, 12:25 59255 σε απάντηση της 59243

    Απ: Πρόβλημα με την εκτέλεση ενός SQL Query...

    Ορίστε: http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx

     


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems