Comment ajouter un champ de recherche à un ensemble de données?
J'ai un jeu de données que j'ai besoin d'un champ de recherche pour. Problème est, cet ensemble de données de la structure est définie par le résultat d'une requête. Je ne peux pas ajouter le champ comme un TFieldDef avant de .Active = true;
parce qu'elle est écrasée, et je ne peux pas l'ajouter après l'exécution de la requête parce que vous ne pouvez pas modifier la structure d'un ensemble de données ouvert.
Il doit y avoir un moyen de le faire. Personne ne sait comment?
EDIT: Il semble y avoir une certaine confusion à propos de ce que je suis à la recherche pour. Je ne suis pas à la recherche pour une recherche au moment de la requête. Je suis à la recherche d'un champ de recherche, un TField objet où FieldKind = fkLookup, de sorte qu'il peut être utilisé avec les bases de données de recherche de zone de liste déroulante pour modifier les données après que la requête a retourné son résultat. Cela n'a rien à voir avec le SQL et tout à voir avec Delphi dataset modèle et les contrôles de bases de données.
Vous devez vous connecter pour publier un commentaire.
Le plus simple est de définir les champs persistants au moment de la conception.
Vous pouvez également modifier votre instruction SQL pour obtenir les valeurs calculées à partir du serveur.
Vous avez besoin pour créer les champs vous-même avant d'ouvrir le jeu de données.
De la première à obtenir tous vos définitions de champ à partir de la base de données
Ensuite une boucle sur chaque fielddef et de créer le champ normal, et également de créer le champ de recherche le cas échéant. Version simplifiée du code comme ceci;
Ensuite, vous pouvez ouvrir le jeu de données.
Vous avez deux ensembles de données sur votre formulaire (dire tblOrder,tblCustomer)
Un champ de l'ordre est une clé étrangère de la table client customerId
Le champ Clé de la table client est Id, Nom = Nom
Ajouter tous les champs (clic droit sur les ensembles de données, les champs de l'éditeur , ajouter tous les champs.
Puis faites un clic droit sur le tableau de commande et choisissez les champs de l'éditeur, puis un clic droit nouveau champ.
Nom = myLookup,est de Type string,Taille xx, FieldType = Recherche.
Champ de clé = code client,dataset = tblCustomer, la recherche de la Clé = Id,champ de Résultat = Nom.
Maintenant, votre champ de recherche est défini.
Pour le faire fonctionner dans un éditeur de texte (mot à dire dans un TDBLookupCombo)
Ajouter des sources de données pour le formulaire dsOrder
Connecter à tblOrder.
Maintenant définir la source de données = dsOrder,Champ = myLookup
Vous n'avez pas à mettre à la recherche de la source...
Vous permettent de table
Orders
sur le terrain (entre autres)CustomerId
(de typeInteger
), et le tableauCustomers
avec des champsCustomerId
(de typeInteger
) etCustomerName
(de typeString
). Puis, en Delphi IDE, tomber sur le formulaire d'ensembles de donnéestable_main
ettable_lookup
(pour les tablesOrders
etCustomers
respectivement). Ouvrir les champs de l'éditeur pourtable_main
, ajouter (entre autres) champCustomerId
, puis créer un nouveau champ des propriétés de champ:et avec des propriétés de recherche:
Espère qu'il est toujours pertinents aujourd'hui.