Si vous ne l'aimez pas ce que l'interface d'accès fait à votre code SQL, pourquoi voudriez-vous même essayer de voir votre SQL en elle? Il efface tout joli format ou espace qui peut avoir été ajouté pour aider le lecteur humain. Il peut même re-facteur SQL: littéraux de date au format américain, parens aux supports pour une sous-requête, la syntaxe des paramètres dans une PROCEDURE
, la perte de noms de corrélation de colonne dans une VIEW
, etc.
Sonne comme une meilleure approche pour vous est de créer des objets de base de données en utilisant un script SQL Data Definition Language (DDL SQL) puis référez-vous à votre script pour la maintenance future.
Par exemple, voici un script DDL moteur de base de données Access SQL pour créer des objets de base de données:
CREATE TABLE Constants
(
lock CHAR(1) WITH COMPRESSION
DEFAULT 'x'
NOT NULL,
CONSTRAINT Constants__max_one_row
CHECK (lock = 'x'),
pi DECIMAL(3, 2) NOT NULL
)
;
INSERT INTO Constants (pi) VALUES (3.14)
;
CREATE TABLE Things
(
thing_ID CHAR(10) WITH COMPRESSION NOT NULL
CONSTRAINT uq__Things UNIQUE,
CONSTRAINT thing_ID__numeric_chars_only
CHECK (thing_ID NOT ALIKE '%[!0-9]%'),
thing_name VARCHAR(20) DEFAULT '{{NONE}}' NOT NULL,
CONSTRAINT thing_name__whitespace
CHECK (
thing_name NOT ALIKE ' %'
AND thing_name NOT ALIKE '% '
AND thing_name NOT ALIKE '% %'
AND LEN(thing_name) > 0
)
)
;
CREATE PROCEDURE AddThing
(
arg_thing_ID CHAR(10),
arg_thing_name VARCHAR(20) = '{{NONE}}'
)
AS
INSERT INTO Things (thing_ID, thing_name)
SELECT thing_ID, thing_name
FROM (
SELECT RIGHT('0000000000' + arg_thing_ID, 10) AS thing_ID,
IIF(LEN(arg_thing_name) = 0, '{{NONE}}', arg_thing_name)
AS thing_name
FROM Constants
) AS DT1
WHERE thing_ID NOT ALIKE '%[!0-9]%'
AND thing_name NOT ALIKE ' %'
AND thing_name NOT ALIKE '% '
AND thing_name NOT ALIKE '% %'
;
CREATE VIEW Stuff
(
stuff_ID, stuff_name
)
AS
SELECT T1.thing_ID, T1.thing_name
FROM Things AS T1
WHERE ' ' & T1.thing_name & ' ' ALIKE '% stuff %'
;
Maintenant, je sais par expérience l'interface utilisateur Access est incapable d'exposer une partie de la caractéristique du moteur de base de données d'accès (CHECK
contraintes, CHAR()
type de données, WITH COMPRESSION
propriété, etc) et peut essayer de changer la syntaxe dans une vue SQL de l'objet Query: parens dans la sous-requête, paramètres pour le PROCEDURE
- qu'il insistera pour appeler une requête -, corrélation de colonne nommer la liste pour le VIEW
- qu'il insistera pour appeler aussi une requête, etc.). Mais qui s'en soucie? Si je dois modifier le schéma, je le ferai en fonction du script SQL DDL et non de ce que l'interface utilisateur d'Access pense que mon script a dit.
Cela me laisse libre d'utiliser l'éditeur SQL de mon choix, par exemple. celui qui colore les mots-clés séparément des éléments de données, a auto-complétion, indente les éléments de requête à mon choix, etc.
Voulez-vous dire que le formatage est perdu? Ou voulez-vous dire que la "correction" change réellement la substance de la requête? Je n'ai pas vu ce dernier. – hawbsl
Je veux dire le dernier. Je l'ai vu. – Benjol