Cum se obține o interogare sql de la

Am văzut multe țări diferite. dar acest lucru pentru a spune că am respectat încă corporația Microsoft, după o cunoaștere detaliată cu Linux. Și de asta. Sistemul de operare Windows este cel mai simplu și accesibil pentru utilizatorii care nu și-au dedicat viața unui calculator. În niciun mod comercial, mult mai puțin liber, sistemul nu este atât de simplu și accesibil ca în Windows. Și acesta este doar punctul meu de vedere. Nu doresc să ridic o dezbatere pe această temă, pentru că vreau să vorbesc despre munca mea și despre cercetarea mea. Acestea privesc, în opinia mea, una dintre cele mai bune și mai dezvoltate baze de date locale - Microsoft Jet sau mdb. Cu anumite eforturi, puteți scrie chiar și un bun program de rețea bazat pe mdb.

De ce este necesar?

Pe parcursul anilor de activitatea mea cu MDB (aproximativ 6 ani) am o dată se confruntă cu o situație în care o bază de date Access nu a putut fi restabilită după o pană de curent bruscă (la UPC-ah, iar discursul nu a fost). Și nevoia de recuperare a avut loc doar o singură dată 5. În plus, suportul Jet este construit în Windows, și nu este nevoie să caute (cumpărare) și a instala driver-ul pentru baza de date. Toate celelalte formate sunt mai predispuse la distrugere sau sunt compuse din mai multe fișiere; În absența unuia dintre aceste fișiere, vorbirea despre integritatea datelor este complicată. Sunt gata să discut acest fapt.

Început cu o fereastră simplă în care a fost TMemo - pentru textul interogării și un buton pentru a executa această interogare. CheckBox - pentru a specifica dacă trebuie returnată rezultatul interogării sau nu. A doua fereastră a fost deschisă cu DBGrid, care a fost rezultatul interogării. Al treilea ecran - ListBox, care conținea o listă de tabele de baze de date și interogări (macro-uri, rapoarte și forme de acces nu pot obține acum, nici măcar nu știu unde este ascuns). Dând dublu clic pe elementul din listă, toată fereastra cu DBGrid a fost deschisă, unde puteai vedea conținutul tabelului sau interogării.

Prima bază de date pe care am creat-o cu ajutorul managerului de sistem ODBC - există o astfel de oportunitate! Primele tabele trebuiau create folosind instrucțiuni SQL. Am fost plăcut surprins că accesul prin SQL poate face lucruri care nu sunt descrise nicăieri în Access Help. Aceste opțiuni includ parametrul DEFAULT din instrucțiunea CREATE TABLE. În ajutorul pentru a accesa despre el nu există nici un cuvânt! Și în ajutorul de la InterBase - este. Am încercat - este foarte frumos să setați valorile implicite pentru câmpul tabelului care este creat. Pe scurt, cine caută - va găsi. Primele cereri și proceduri au trebuit să fie salvate în formă text, pentru a șterge interogarea salvată din baza de date și a le corecta după corectare. Apoi am încercat să obțin textul de interogare din baza de date prin ADO - nu a funcționat, nu a funcționat până acum. Trebuia să aleg o altă cale. Dacă Microsoft face acest lucru, de ce nu pot?

Deci, dacă vă uitați la tabelele de sistem, atunci există toate informațiile necesare (sau aproape toate). Folosind-o, puteți scrie un parser care va colecta textul cererii folosind formatul înregistrării de către Microsoft în sine. Apoi salvați cererea modificată (rețineți: sau procedură) utilizând instrucțiunea CREATE VIEW sau CREATE PROCEDURE.

Formatul de stocare a interogării SQL în Access.
Faceți imediat o rezervare că toate acestea sunt posibile numai cu drepturi de administrator la baza de date (Un alt plus în favoarea Accesului).

Mai jos este un tabel cu descrierea a tot ce am putut descoperi despre asta. Folosind aceste informații, am scris un parser care colectează toate acestea în textul interogării. Eu nu pretind completitudinea prezentării, pentru că nu am dezasamblat complet această informație, dar poate că aceasta va ajuta pe cineva. Voi fi fericit să vă ajut, dacă cineva știe ceva despre acest subiect. Cel puțin 70% dintre cereri sunt decriptate și executate conform destinației.

Acordul privind denumirile: dacă nu este descris ceva - nu am înțeles - nu a fost nevoie sau nu a sugerat.

  • Semne. înseamnă că mă îndoiesc foarte mult de corectitudinea informațiilor descrise.
  • Celule goale - în practica mea nu a avut loc.
  • [Ceva] este un tip de valoare generică, de exemplu, dacă există doar 1 sau 2 în câmp sau 3 - scriu Integer, chiar dacă
  • câmp de tip - text.
  • - variabilă sau valoare.
  • . - o parte din interogare nu este critică pentru descriere. (pentru claritate).
  • Descrierea italică este ceea ce aveți nevoie pentru a analiza interogarea.

Apariția intrării tabelului MSysObjects (toate obiectele bazei de date).

Deși Access nu distinge între o cerere și o procedură, ea există de fapt în ADO. Interogarea este o interogare SQL simplă fără parametri, care se numește VIEW. Toate cererile de modificare a structurii tabelelor, interogările cu parametrii, cererile de fuziune etc. sunt considerate proceduri și sunt selectate din bază de date ca viziuni sau proceduri. Interogările sunt stocate în bază de date, respectiv utilizând CREATE VIEW, iar procedurile sunt CREATE PROCEDURE. Dacă ați adăugat parametrii la interogare, a fost transformat într-o procedură și înapoi trebuie să o salvați utilizând CREATE PROCEDURE. Da, și înainte de a salva interogarea modificată, nu uitați să ștergeți cea anterioară - DROP VIEW sau DROP PROCEDURE. De altfel anchetă (vizualizare) este îndepărtată și masa de instrucțiuni DROP, dar nu aș recomanda să-l folosească, pentru că eroarea în numele, sau lipsa de concentrare - și de a scoate masa in loc de interogare. Cu ajutorul DROP VIEW, tabela nu poate fi ștearsă. Această opțiune este mai sigură. Cu DROP VIEW, puteți șterge procedura, dar, din nou, este mai bine să folosiți instrucțiunile intenționate - cel puțin veți înțelege în mod clar ce faceți.

Descrierea câmpurilor și a valorilor lor legate de cerere (procedură).

Formatul de stocare interogare din Access (MsysQueries) Valoarea ObjectID și numele interogării sunt în tabelul MsysObjects

Același cod este conținut în toate celelalte înregistrări legate de această interogare

Intrare goală (nu am întâlnit-o)

Merge după Atributul 0 întotdeauna

Tipul cererii este determinat de câmpul Flag. Nu este întotdeauna prezent. Dacă intrarea lipsește, atunci (cel mai probabil, da, nu s-au produs și alte variante) interogare SELECT

Articole similare