maison
Top.Mail.Ru Yandeks.Metrika
Forum: "Débutants";
Archive actuelle: 2017.12.24;
Télécharger: [xml.tar.bz2];

vers le bas

Comment faire une requête SQL à plusieurs tables (ADO, MS Access)? Trouver des branches similaires


gedevan   (2016-01-08 14:52) [0]

Il y a plusieurs tables que je veux transformer en une à la sortie de la demande. De plus, Internet décrit comment attacher une table à une autre (c’est-à-dire qu’une connexion est établie en collant les colonnes d’une autre table à droite). J'ai besoin de mes tables dans le jeu de résultats pour aller les unes après les autres. De plus, les tables ont à la fois les mêmes colonnes et des colonnes uniques pour chaque table. I.e. comment faire coïncider les colonnes correspondant au nom dans la sélection finale (verticalement), et les colonnes non correspondantes sont également présentes dans la sélection finale, mais dans les parties des données qui correspondent à des tables sans colonne, il y aurait simplement des valeurs vides. Et comment attacher la colonne "Nom de la table" à cette table et écrire le nom de la table dans laquelle ces données sont réellement entrées dans la sélection?

Maintenant, j'ai fait une requête séparée pour chaque table, cela fonctionne terriblement lentement, et ici une question s'est posée, j'espère qu'une requête se révélera plus rapide.



gedevan   (2016-01-08 14:59) [1]

c'est-à-dire Encore une fois, la commande JOIN n'est pas ce dont j'ai besoin. Il n'y a pas de données dans les tables qui devraient apparaître dans une ligne de l'échantillon résultant. Dans l'échantillon final, le nombre de lignes doit être égal à la somme du nombre de lignes dans les tables jointes.



gedevan   (2016-01-08 15:22) [2]

En général, je me suis rendu compte qu'il est nécessaire d'utiliser UNION, il est difficile de savoir quoi faire avec différents champs, comment les ajouter avec une valeur vide pour les requêtes sur des tables dans lesquelles il n'y a pas de tels champs.



gedevan   (2016-01-08 21:30) [3]

SQLText: = "Sélectionnez" "Tem" ", ShotNumber," + "Nom, ItemName, NumberOfSearch, tempfound, itIsTemplate, anotherTime" + "SearchFixed, x1, x2, y1, y2, ksov, temps de recherche, FourSearch, NameConnectedScreen, NULL" + "À partir de modèles où ShotNumber =: prm" + "UNION" + "Sélectionnez" "Dyn" ", ShotNumber," + "Nom, NumberOfSegment, null, null, null, null, null, x1, x2, y1, y2, null, heure de la recherche," + "null, NameConnectedScreen, NULL" + "DE DynObj où ShotNumber =: prm" + "UNION" + "Sélectionnez" "Col" ", ShotNumber," + "Nom, NumberOfSegment, null, null, null, null, null, x1, x2, y1, y2, null, heure de la recherche," + "null, NameConnectedScreen, NULL" + "FROM ColorSearch où ShotNumber =: prm" + "UNION" + "Sélectionnez" "Tex" ", ShotNumber," + "Nom, NumberOfSegment, null, null, null, null, null, x1, x2, y1, y2, null, heure de la recherche," + "null, NameConnectedScreen, RecognizedText" + "FROM TextRecognize where ShotNumber =: prm"; ADOQuery: = TADOQuery.Create (DebugFilmConnection); ADOQuery.Connection: = DebugFilmConnection; ADOQuery.Active: = false; //ADOQuery.SQL.Text: = "SELECT * FROM Modèles où ShotNumber =: prm"; ADOQuery.SQL.Text: = SQLText; ADOQuery.Parameters.ParseSQL (ADOQuery.SQL.Text, true); ADOQuery.Parameters.ParamByName ("prm"). Valeur: = nombre; ADOQuery.Active: = true; ADOQuery.ExecSQL;

C'est ce avec quoi je suis né, mais il jure que l'objet Parameter n'est pas défini correctement. Informations incohérentes ou incomplètes fournies.

Et si au lieu de ADOQuery.SQL.Text: = SQLText; laissez une ligne commentée, alors tout fonctionne ...

quel est le problème :-(



gedevan   (2016-01-08 21:37) [4]

et je ne comprends pas non plus le nom des première et dernière colonnes de cette requête (puisque dans la table réelle, la première colonne n’est pas du tout et que la dernière ne figure que dans la dernière table)? et généralement comment définit-il les noms des colonnes?



Германн ©   (2016-01-09 00:04) [5]

Souhaitez-vous même donner les structures de ces tables, leurs relations (le cas échéant) et ce que vous voulez obtenir dans le jeu de données à la suite de votre requête? Il n'y a pas de médium sur les forums.



sniknik ©   (2016-01-09 00:37) [6]

> L'objet de paramètre n'est pas défini correctement.
4-re est spécifié, 1 est défini, naturellement les autres sont erronés.
> Et si au lieu de ADOQuery.SQL.Text: = SQLText; laissez une ligne commentée, alors tout fonctionne ...
Ici, une variable est définie et définie.

> et en général, comment détermine-t-il les noms des colonnes?
lu dans la documentation / livre sur SQL. tout y est détaillé.

et un autre conseil - 1: écrivez plus clairement, sans ordures. 2: vérifie simplement, les mêmes requêtes élémentaires. 3: utilisez ADODataSet.



gedevan   (2016-01-09 01:45) [7]

Oui, j'ai prm, prm2, prm3, prm4 dans la demande et cela a fonctionné. Bien que, comme pour moi, cela n’ait aucun sens (j’ai étudié à 1С) car c’est en réalité un paramètre, la même valeur. pourquoi il doit être écrit différemment.



sniknik ©   (2016-01-09 18:26) [8]

Il s’agit vraiment d’un paramètre 4-re, les alias / noms du même nom ne sont pas pris en charge (comme c’était le cas dans BDE, par exemple, même s’il s’agissait là d’une semi-erreur). et pourquoi ... eh bien, ils l'ont fait, et pas dans le dolph, mais dans "l'API", il y a généralement des questions et des numéros de série attribués ... dans le dolph au moins une sorte de commodité.
si vous le souhaitez, vous pouvez le laisser tel quel, avec le même nom, mais définir la même valeur pour tous, par index. également possible.



Лори   (2016-01-11 12:07) [9]

Un peu pas mon sous-type de SGBD / pilote, mais je vais écrire mes pensées.

Pourquoi ne pas créer une variable DECLARE, la variable est égale au paramètre prm, utiliser la variable dans la requête elle-même?
Pourquoi ne pas simplement faire VIEW dans la base de données?

Et avec quelle peur "une demande se révélera plus rapide" à cause de UNION? o ___ o
Au contraire, les index devraient être ajoutés ...



sniknik ©   (2016-01-11 17:14) [10]

> Pourquoi ne pas faire une variable decare
Accès possible pour un semi-rémorque et poids lourds a moins de deux cent metres distance ?

> Et avec quel effroi "une requête se révélera plus rapide"
ceteris paribus, requêtes 1 pour les enregistrements 1000 et 100 pour les enregistrements 10 ... la première sera plus rapide. bien, etc. en proportion.

> à cause de UNION? o ___ o
à cause de cela, il peut simplement ralentir, car implicitement distinct - le tri est effectué, c'est-à-dire traitement de données supplémentaire, c’est-à-dire que si cela n’est pas nécessaire, il est préférable d’utiliser UNION ALL.
bien que j’ai peur du frein, pas à cause de la vitesse d’échantillonnage, mais à cause de son propre code, comme ici
http://delphimaster.net/view/2-1451827715/
sniknik © (03.01.16 18: 58) [6]



gedevan   (2016-01-18 03:03) [11]

Eh bien, la vitesse s'est accrue, je dirais parfois, après l'introduction d'une seule demande.



gedevan   (2016-01-24 07:31) [12]

Néanmoins, avec des bases de données volumineuses (1-2кк + records), la vitesse d'exécution de la requête diminue considérablement. La question est de savoir si l’utilisation du paradoxe peut devenir plus rapide? Ou autre chose? Je n’aime pas l’option de télécharger tout le 600 + mb avec une seule demande, et je doute qu’elle tourne plus vite sur l’échantillon ...

Ou peut-être que quelque chose peut être fait avec la base de données pour que les demandes soient faites plus rapidement? Maintenant, j'ai plusieurs tables, elles ont toutes un champ par lequel elles peuvent être liées, en fait c'est ici que ShotNumber =: prm ";

Je n'indexe rien, car En fait, je ne sais pas comment, mais cela vaut la peine de savoir si cela sera utile.



sniknik ©   (2016-01-24 18:10) [13]

> télécharger tous les 600 + mb en une seule demande
vous ne croirez pas, mais ce n'est pas recommandé. vous devez télécharger uniquement ce qui est requis.

> quelque chose peut être fait avec la base de données pour que les demandes soient faites plus rapidement?
si abstrait? rien et passer à un autre ne va pas aider non plus. sauf par hasard.

> mais il est utile de savoir si cela sera utile?
apprendre à être, non veut dire non.



gedevan   (2016-01-27 11:01) [14]

Un autre problème avec cette demande

Le champ FourSearch, n’est que dans la première demande. Dans le reste, je remplace simplement 0 et, dans le tableau contenant la demande, il n’existe généralement pas de colonne de ce type. Et donc, lorsque j'essaie de parcourir cette sélection via TADODataSet et d'appeler FourSearch: = ADODataSet.FieldByName ("FourSearch"). Asboolean;

Ensuite, il jure qu'il ne peut pas le convertir en un type de boulean! même si j'appelle cette commande uniquement pour les lignes extraites de la table Modèles. Et si cet ensemble de données est sorti vers DBGrid, 0 ou -1 apparaîtra dans ce champ. Et si vous l'ouvrez dans Excel, alors FALSE ou TRUE!

Pour ce faire, afin que True soit affiché dans DBGrid, False ne jure pas que c’est?

Pour le moment, je n’ai trouvé qu’une solution, ajoutez ce champ à toutes les tables et fixez-le avec une seule valeur. Est-il possible de résoudre ce problème au niveau de cette requête sans rien ajouter aux tables?



sniknik ©   (2016-01-27 11:14) [15]

> Dans le reste, je viens de substituer
substituez Non, si le but est ce sur quoi vous écrivez, et non sur la ligne 17, cela vous aidera. bien que ... autant que je m'en souvienne, 0 est parfaitement converti au type booléen.



gedevan   (2016-01-27 15:08) [16]

si TableExists (AConnection, "Templates") alors commencer résultat: = résultat + "Sélectionnez" + "" "Tem" "," + "ShotNumber", + "Nom" + "ItemName," + "NumberOfSearch," + "tempfound", + "itIsTemplate", + "une autre fois", + "SearchFixed," + "x1," + "x2," + "y1," + "y2," + "ksov," + "heure de recherche", + "FourSearch," + "NameConnectedScreen", + "NULL", + "code d'erreur" + "FROM Modèles où ShotNumber =: prm0"; inc (parQté); fin si TableExists (AConnection, "ColorSearch"), alors commencer si résultat <> "" alors résultat: = résultat + "UNION"; result: = result + "Select" "Col" ", ShotNumber," + "Nom", "aucun élément" ", NumberOfSegment, tempfound," "Non" "," "Non" "," "Non" ", x1, x2, y1, y2,0, searchtime," + "" "Non" ", NameConnectedScreen, NULL, errorCode FROM ColorSearch où ShotNumber =: prm2"; inc (parQté); fin

um, réduit aux demandes 2x, pour le test. Mettez NON, maintenant, j'ai les lignes des modèles 0 et -1 dans le dbgrid, et dans le tableau ColorSearch, il indique NO. Mais par exemple, le champ tempfound, que j’ai ajouté à ColorSearch et que j’ai rempli le tableau, et pour lui, true, false est reflété pour toutes les lignes. Je veux que tous les champs soient affichés comme ceci (



gedevan   (2016-01-27 15:12) [17]

AConnection.Execute ("CREATE TABLE ColorSearch" + "(_Index int IDENTITY (1,1)," + "ShotNumber numeric (19,0)," + "Nom de caractère (50)," + "NumberOfSegment numeric (10,0)," + "bit trouvé NULL DEFAULT 0," + "x1 numérique (10,0)," + "x2 numérique (10,0)," + "y1 numérique (10,0)," + "y2 numérique (10,0)," + "heure de recherche numérique (10,0)," + "NameConnectedScreen char (50)," + "errorCode numeric (19,0)" + ");");

Voici à quoi ressemble une vraie table ColorSearch.



gedevan   (2016-01-27 17:25) [18]

et "" faux "" et "" non "" la fonction est convertie sans erreur. Et les données DBGrid de la table Template montrent à la fois 0 et -1 (avec cela.



sniknik ©   (2016-01-27 18:33) [19]

> Mettez NO
en fait, vous mettez la chaîne "Non", pas Non ...



sniknik ©   (2016-01-27 18:51) [20]

> Je veux que tous les champs soient affichés comme ceci (
Les champs calculés n'ont pas d'en-tête avec un type, le type est déterminé dans une valeur de variante, et cela dépend de l'expression (moteur) ...
essayez toujours la longueur de la chaîne dans le champ pour en obtenir une spécifique, eh bien, vous savez que la chaîne résultante ne contient pas plus de 10 caractères, et même en ajoutant des caractères vides - "" + "" donnera la chaîne vide bien sûr, mais dans un long champ 255 ... il semble, Je ne me souviens pas. vérifier.



gedevan   (2016-01-27 18:53) [21]

oui, mais elle subit une transformation. Et juste non, non.

Et une autre question est de savoir comment dans TADODataset trouver le nom du champ dans l’échantillon. DBGrid vous oblige à spécifier le nom du champ que je ne connais pas (car il existe quelque chose comme Expr1000



gedevan   (2016-01-27 19:11) [22]

ADOQuery.Fields [16] .FieldName



gedevan   (2016-01-27 19:34) [23]

lisez le manuel sur sql mais jamais trouvé. N’est-il vraiment pas possible d’insérer une construction comme si valeur = 1 alors "" vrai "", c’est-à-dire si la valeur du champ dans la demande est un, alors renvoyer le travail à la place de l’unité?



Кщд ©   (2016-01-28 06:51) [24]

iif / switch
dans google interdit?



кгшзх ©   (2016-01-28 08:57) [25]

une autre technique de programmation puissante a été appliquée ici.
trier au hasard des mots familiers et pas tellement et en faire un programme.
un jour ça devrait marcher.



sniknik ©   (2016-01-28 10:38) [26]

> Et juste non
Avez-vous vraiment accès?

Type de données booléen
Une valeur True / False ou yes / no. Les valeurs booléennes sont généralement stockées dans des champs Bit dans une base de données Microsoft Jet; Cependant, certaines bases de données ne supportent pas directement ce type de données.


> si la valeur du champ dans la demande est un, renvoyer le travail au lieu d'un?
somefield * -1
si, si j'ai bien compris, vous avez une "valeur de type perverse" - 0 = false, 1 = true.

> un jour ça devrait marcher
il existe une théorie selon laquelle un million de singes en appuyant accidentellement sur les touches d'une machine à écrire peuvent écrire «guerre et paix» ... réfutés par l'invention d'Internet.



sniknik ©   (2016-01-28 10:39) [27]

> Et juste non
répondre à la demande -
SÉLECTIONNER oui, non



gedevan   (2016-01-28 11:06) [28]

Oui, ils ont été interdits (je n'ai rien trouvé à propos du commutateur. Et Case, sinon d'autre fin donne une erreur



gedevan   (2016-01-28 11:14) [29]

il ne jure pas au NON et répond à la demande. Mais FourSearch: = ADODataSet.FieldByName ("FourSearch"). Asboolean; cette expression produit une erreur qu'elle ne peut pas convertir. Et si vous insérez une ligne, elle ne produit pas. En général, je peux dire que j'ai résolu ce problème, cela me convient.

Cela ne fonctionne pas pour moi que DBGrid me montre 0 et -1 (au lieu de false, true) pour les valeurs de la table Modèles (où je n’ai pas simplement dessiné ces champs dans la requête, mais ils le sont réellement dans la table Modèles). Je souhaite donc les remplacer également par des lignes directement dans la demande



sniknik ©   (2016-01-28 11:16) [30]

> Je n'ai rien trouvé à propos de l'interrupteur
chercher de l'aide dans le axss, google n'est pas nécessaire!



gedevan   (2016-01-28 11:21) [31]

somefield * -1 si, si j'ai bien compris, vous avez une "valeur de type perverse" - 0 = false, 1 = true.

par -1 refuse de se multiplier, la demande se bloque avec une erreur. Si vous supprimez des requêtes avec des champs factices, DBGrid indique True et False comme prévu. Et je suis sûr que dans la requête 0 et 1, où DBGrid prend -1, je n'en ai aucune idée.



sniknik ©   (2016-01-28 11:22) [32]

> cette expression produit une erreur qu’elle ne peut pas convertir.

> sniknik © (27.01.16 11: 14) [15]
Cité1 >> Dans le reste, je remplace simplement
> substitut Non, si ce que vous écrivez est ce que vous écrivez, pas la ligne 17va aider. bien que ... autant que je m'en souvienne, 0 est parfaitement converti au type booléen.
l'hypothèse concernant la ligne 17 est logique.

> Je souhaite donc les remplacer également par des lignes directement dans la demande
un désir idiot ... de changer les vraies données, les types réels en courbes / nécessitant des lignes de code supplémentaires et uniquement en raison de leur représentation dans la grille ...
Je n'aime pas la présentation / affichage de celui-ci et le change, ne touchez pas les données elles-mêmes.



sniknik ©   (2016-01-28 11:27) [33]

> refuse de multiplier par -1, la demande se bloque avec une erreur.
alors vous mentez que vous avez accecc, ou "de manière créative" interprétez ce que j'ai dit et cachez l'info. (erreur / comment vous faites / ce que vous accomplissez)
Cela ressemble à un projet secret ... "Je me lave les mains."



gedevan   (2016-01-28 11:32) [34]

"Commutateur (FourSearch <> 0," "true" ", FourSearch = 0," "false" "),"

ici il est d'interposer à la demande? donne une erreur (



gedevan   (2016-01-28 11:35) [35]

pourquoi secret, j'ai montré la demande


Function GetPhotoQueryText(AConnection: TADOConnection;
 var parQty: integer): string;
begin
 result := "";
 parQty := 0;
 if TableExists(AConnection, "Templates") then
 begin
   result := result +

   "Select " +
   """Tem"","+
   "ShotNumber," +
   "Name," +
   "ItemName," +
   "NumberOfSearch," +
   "tempfound,"+
   "itIsTemplate, "+
   "anotherTime, "+
   "SearchFixed, "+
   "x1," +
   "x2," +
   "y1," +
   "y2," +
   "ksov," +
   "searchtime," +
   "FourSearch*(-1), "+
   "NULL," +
   "errorCode " +
   "FROM Templates  where ShotNumber = :prm0";
   inc(parQty);
 end;

 //if result <> "" then
 //  result := result + ";";

 // exit;
 if TableExists(AConnection, "ColorSearch") then
 begin
   if result <> "" then
     result := result + " UNION ";

   result := result + "Select ""Col"",ShotNumber, " +
     "Name,""no items"",0,tempfound,""false"",""false"",""false"",x1,x2,y1,y2,0,searchtime," +
     """false"",NULL,errorCode FROM ColorSearch where ShotNumber = :prm2";
   inc(parQty);
 end;

 if  TableExists(AConnection, "DynObj") then
 begin
   if result <> "" then
     result := result + " UNION ";

   result := result + "Select " +
   """Dyn""," +
   "ShotNumber, " +
   "Name," +
   """no items""," +
   "NumberOfSegment," +
   "tempfound," +
   """false""," +
   """false""," +
   """false""," +
   "x1," +
   "x2," +
   "y1," +
   "y2," +
   "0," +
   "searchtime," +
   """false""," +
   "NULL," +
   "errorCode" +
   " FROM DynObj where ShotNumber = :prm1";
   inc(parQty);
 end;

 if TableExists(AConnection, "TextRecognize") then
 begin
   if result <> "" then
     result := result + " UNION ";

   result := result + "Select ""Tex"",ShotNumber, " +
     "Name,""no items"",NumberOfSegment,tempfound,""false"",""false"",""false"",x1,x2,y1,y2,0,se archtime," +
     """false"",RecognizedText,errorCode FROM TextRecognize where ShotNumber = :prm3";
   inc(parQty);
 end;

 if result <> "" then
   result := result + ";";
end;



gedevan   (2016-01-28 11:42) [36]

une erreur est survenue lors de la multiplication ailleurs .. ce n'est pas dans la demande



gedevan   (2016-01-28 11:52) [37]

le commutateur fonctionne également ... un problème, DBGrid ne montre alors rien du tout.

En général, si vous utilisez dbgrid (que j'ai déjà essayé, mais pas avec beaucoup de succès). C'est la question.

Si je connecte TADODataSet à DBGrid d'une part et exécute les cycles TADODataSet de l'autre, est-ce correct ou cause-t-il des problèmes? (parce que mon DBGrid est bogué quand j'essaye de redessiner quelque chose dedans).

procedure TTv.TVTableLogDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: entier; Colonne: TColumn; Etat: TGridDrawState); commencer si ADODataSet1.FieldByName ("tempfound"). Value = true alors Font.Color: = clGreen else if ADODataSet1.FieldByName ("tempfound"). Value = false alors Font.Color: = clred; if (Column.FieldName = "Expr1000") ou (Column.FieldName = "Name") ou (Column.FieldName = "ItemName") puis commencer avec TVTableLog.Canvas do commencer Brush.Color: = clwhite; FillRect (Rect); TextOut (Rect.Left + 2, Rect.Top + 2, Column.Field.Text); fin fin d'autre commencer avec TVTableLog.Canvas do commencer Brush.Color: = clwhite; FillRect (Rect); TextOut (Rect.Right - 2 - TextWidth (Column.Field.Text), Rect.Top + 2, Column.Field.Text) fin fin fin



sniknik ©   (2016-01-28 11:59) [38]

> "Basculement (FourSearch <> 0," "true" ", FourSearch = 0," "false" "),"
> ici c'est interposer à la demande?
tout dépend du contexte comment insérer, et pour quoi. insérez par exemple un bâton dans une roue de bicyclette lors de vos déplacements, ou dans un parking de différentes choses. arrêter le vélo / il n'a pas roulé ou plié les aiguilles à tricoter aussi.

> donne une erreur (
IL N'Y A PAS D'ERREURS "donne une erreur." L'erreur est généralement des informations sur ce qui se passe.

> ce qui est secret alors j'ai montré la demande
c'est-à-dire nous parlons déjà beaucoup et la demande n'a pas du tout changé ... à quoi ça sert?



gedevan   (2016-01-28 12:49) [39]

IL N'Y A PAS D'ERREURS "donne une erreur." L'erreur est généralement des informations sur ce qui se passe.

erreur d'accès vibration. Il est émis si vous ne commentez pas la fonction de [37]. Il n’était pas possible de comprendre exactement où il avait été publié ... parce que Cela se produit à une certaine itération 100500, ou généralement xs où.



gedevan   (2016-01-28 13:02) [40]

Je comprends qu'il vole vers Column.Field.Text cet endroit lorsque Column.FieldName = "FourSearch", c.-à-d. il devrait y avoir une valeur multipliée par -1 ou un commutateur reçu



gedevan   (2016-01-28 13:05) [41]

parce que Column.Field = nil then (



sniknik ©   (2016-01-28 13:06) [42]

> erreur d'accès.
cinquième dolphya et usage de l’adoquerie?
http://www.delphisources.ru/pages/faq/base/ado_acc_viol_err.html



sniknik ©   (2016-01-28 13:10) [43]

> parce que Column.Field = nil then (
comme un booléen avec déflation, soudain la valeur est nulle ???
+
AsBoolean devrait être converti en false.



gedevan   (2016-01-28 13:28) [44]

Delfi xe5 AdoDataSet que j'utilise.

En général, j'ai fait un redessin dans DBGrid. Mais il y a un problème. Périodiquement, après la requête suivante, DBGrid commence à appeler la fonction en continu et sans s'arrêter (la requête n'est pas appelée à nouveau, c'est-à-dire qu'elle est "elle-même")

procedure TTv.TVTableLogDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: entier; Colonne: TColumn; Etat: TGridDrawState); var t: chaîne; commencer si ADODataSet1.FieldByName ("tempfound"). Value = true alors Font.Color: = clGreen else if ADODataSet1.FieldByName ("tempfound"). Value = false alors Font.Color: = clred; if (Column.FieldName = "Expr1000") ou (Column.FieldName = "Name") ou (Column.FieldName = "ItemName") puis commencer avec TVTableLog.Canvas do commencer Brush.Color: = clwhite; si Column.Field <> nil alors commencer FillRect (Rect); TextOut (Rect.Left + 2, Rect.Top + 2, Column.Field.Text); fin fin fin d'autre commencer avec TVTableLog.Canvas do commencer Brush.Color: = clwhite; si Column.Field <> nil alors commencer t: = Column.Field.Text; if (Column.FieldName = "FourSearch") ou (Column.FieldName = "SearchFixed") ou (Column.FieldName = "anotherTime") puis commencer si t = "-1" alors t: = "True" sinon si t = "0" alors t: = "False"; fin FillRect (Rect); TextOut (Rect.Right - 2 - TextWidth (t), Rect.Top + 2, t); fin fin fin fin

à cause de cela, tout clignote et se redessine de travers. En principe, si cela est décidé, le reste ne peut pas être tourmenté.



gedevan   (2016-01-28 13:43) [45]

Un problème survient si ces deux conditions sont remplies dans la même colonne dans des cellules différentes (c'est-à-dire qu'il y a à la fois tempfound = true et tempfound = false dans la colonne):

si ADODataSet1.FieldByName ("tempfound"). Value = true alors Font.Color: = clGreen; // else if ADODataSet1.FieldByName ("tempfound"). Value = false alors // Font.Color: = clred;

et si, par exemple, commentez la seconde, il n’ya pas de problème. Et comment alors peindre en différentes couleurs? (



gedevan   (2016-01-29 08:46) [46]

compris TVTableLog.Canvas.Font.Color: = clGreen; besoin d'écrire



Pages: 1 2 branche entière

Forum: "Débutants";
Archive actuelle: 2017.12.24;
Télécharger: [xml.tar.bz2];

à l'étage









Mémoire: 0.79 MB
Heure: 0.06 c
2-1453318580
testeur
2016-01-20 22:36
2017.12.24
structure de base


2-1452956336
Vegarulez
2016-01-16 17:58
2017.12.24
FastMM a besoin d'aide.


2-1452769577
testeur
2016-01-14 14:06
2017.12.24
Fil


15-1467989201
Kilkennycat
2016-07-08 17:46
2017.12.24
Quel est le meilleur, C # ou Delphi


2-1453069996
Vegarulez
2016-01-18 01:33
2017.12.24
Erreur de création d'objet





afrikaans albanais Arabic arménien azerbaïdjanais basque Biélorusse Bulgare catalan Chinois simplifié) Chinois (traditionnel) croate Tchèque Danois Néerlandais English estonien Filipino Finlandais Français
galicien géorgien Allemand Grecque Créole haïtien hébreu Hindi Hongrois Islandais Indonesian irlandais Italien japonais Coréen letton lituanien macédonien Malay maltais Norvégien
persan Polonais Portugais roumain Russe serbe Slovaque Slovène Espagnol Swahili Suédois Thai turc ukrainien Urdu vietnamien gallois yiddish bengali bosniaque
Cebuano espéranto gujarati Hause hmong Igbo Javanais Kannada Khmer lao latin maori Marathi mongol népalais punjabi somali tamil telugu yoruba
zoulou
Английский Français Allemand Italien Португальский Русский Espagnol