Προς το περιεχόμενο

Γίνεται χρήση μεταβλητών στον Query Builder της VB.Net;


astral_cyborg

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα.

 

Είμαι αρκετά αρχάριος στον προγραμματισμό, αλλά προσπαθώ να φτιάξω μια απλή εφαρμογή φακελώματος προσωπικών στοιχείων μέσω Visual Basic .NET (Visual Studio Express 2010) και Access (Office XP).

 

Η εφαρμογή αποτελείται από 3 φόρμες, οι οποίες συνδέονται με 3 πίνακες από την βάση, μια φόρμα ανά πίνακα αντίστοιχα. Μέσω της κύριας φόρμας εμφανίζονται οι άλλες δύο, παρέχοντας τα αντίστοιχα δεδομένα της βάσης, τα οποία συνδέονται με τον πίνακα της κύριας φόρμας.

 

Θα ήθελα να φιλτράρω όμως την εμφάνισή τους, έτσι ώστε με την επιλογή ενός ονόματος να εμφανίζονται από τους άλλους πίνακες μόνο δεδομένα που συνδέονται με αυτό κι όχι ολόκληρο το περιεχόμενό τους.

 

Επειδή την σύνταξη της SQL την έκανα μέσω του Query Builder του Visual Studio, θα ήθελα να μάθω αν υπάρχει τρόπος να χρησιμοποιήσω μέσα στο περιβάλλον του μεταβλητές από άλλους πίνακες.

 

Παρακάτω δίνω ένα παράδειγμα δύο πινάκων

(AtomikosFakelos με Onomateponimo ως PK

και

ArithmosFakelou με ArithmosFakelouID ως PK και Onomateponimo ως FK)

όπου θέλω να εμφανίσω τα περιεχόμενα του πίνακα ArithmosFakelou που αντιστοιχούν μόνο με το Onomateponimo του πίνακα AtomikosFakelos:

 

 

 

SELECT

ArithmosFakelou.Onomateponimo, ArithmosFakelou.ArithmosFakelou, ArithmosFakelou.AitiologiaDiagrafis

FROM

(ArithmosFakelou INNER JOIN AtomikosFakelos ON ArithmosFakelou.Onomateponimo = AtomikosFakelos.Onomateponimo)

WHERE

ArithmosFakelou.Onomateponimo = ???

 

 

Στην θέση των ερωτηματικών προσπαθώ λοιπόν με κάποιο τρόπο να περάσω την τιμή του frmAtomikosFakelos.txtOnomateponimo.Text (που ανήκει σε διαφορετική φόρμα και σε διαφορετικό πίνακα, που συνδέεται όμως με αυτόν).

 

Πώς θα μπορούσα να περάσω την τιμή αυτή μέσα από το Query Builder;

 

Ευχαριστώ για οποιαδήποτε συμβουλή.

Δημοσ.
SELECT

ArithmosFakelou.Onomateponimo, ArithmosFakelou.ArithmosFakelou, ArithmosFakelou.AitiologiaDiagrafis

FROM

(ArithmosFakelou INNER JOIN AtomikosFakelos ON ArithmosFakelou.Onomateponimo = AtomikosFakelos.Onomateponimo)

WHERE

ArithmosFakelou.Onomateponimo = ???

 

 

ArithmosFakelou.Onomateponimo = @myvariable

 

μέσα στον Query Builder του VS

Δημοσ.
ArithmosFakelou.Onomateponimo = @myvariable

 

μέσα στον Query Builder του VS

 

Αν δώσω πχ. @frmAtomikosFakelos.txtOnomateponimo.Text ή το περάσω πρώτα σε μεταβλητή μέσα στον κώδικα (πχ. Dim myvariable As String = Str(frmAtomikosFakelos.txtOnomateponimo.Text) εμφανίζει το ακόλουθο:

 

Error in WHERE clause near '@'. Unable to parse query text.

 

Μήπως πρέπει να δηλώσω το @ πουθενά πρώτα;

Δημοσ.

Το namespace που χρειαζεται ο φιλος ειναι το System.Data.Oledb κα οχι το System.Data.sqlclient. το πως θα συνταξεις το sql statement εξαρταται απο το αν θα φτιαξεις query στην access και θα το καλεσεις στον κωδικα σου, η αν θα γραψεις inline sql statement οπου και εκει θα περασεις την παραμρτρο σου. Ο,τι απο τα δυο επιλεξεις να κανεις εχει απειρα παραδειγματα στο google

 

 

 

Sent from my iPod touch using Insomnia.app

Δημοσ.

Ok, τελικά κάτι τέτοιο μπορεί να γίνει και μέσω μεθόδου του Binding Source.

Παρακάτω δίνω την γραμμή κώδικα που χρειαζόταν, την οποία την προσέθεσα στο φόρτωμα της φόρμας:

 

'Ο εξορισμού κώδικας με τον προσαρμογέα των πινάκων που δημιουργείται αυτόματα με την ολοκλήρωση των ερωτημάτων στον Query Builder.

'Σημείωση πως τον κώδικα της SQL τον άφησα όπως ήταν, δηλαδή πχ.:

'SELECT Onomateponimo, ArithmosFakelou, AitiologiaDiagrafis

'FROM ArithmosFakelou

 

Me.ArithmosFakelouTableAdapter.Fill(Me.MyDataDataSet.ArithmosFakelou)

 

'Φιλτράρισμα περιεχομένων της στήλης που με ενδιαφέρει με χρήση σε regular expression ολόκληρο το ονοματεπώνυμο που με ενδιαφέρει, το οποίο λαμβάνεται από το αντίστοιχο textbox που ήθελα.

 

ArithmosFakelouBindingSource.Filter = "Onomateponimo LIKE '%" & frmAtomikosFakelos.txtOnomateponimo.Text & "%'"

 

Ελπίζω το παραπάνω να βοηθήσει χρήστες με παρόμοιο πρόβλημα. Αν και απ' ό,τι φαίνεται, το καλύτερο είναι να αποδίδει κανείς σε κώδικα από την αρχή τη σύνδεση της βάσης και τον χειρισμό της, γιατί αν και είναι πιο δύσκολο και με περισσότερες πιθανότητες λαθών, δίνει πλήρη διαχείριση σε αυτήν.

 

Ευχαριστώ για τις απαντήσεις.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...