Adăugați câmpul în tabel

Cum să verificați dacă există un câmp necesar în tabel și dacă acesta nu este adăugat?

O afirmație foarte interesantă a întrebării însă

Înțelesul este în ce. Actualizez programul vechi. În tabelul existent, trebuie să adăugați un câmp suplimentar. Asta este ceea ce aveți nevoie înainte de a deschide masa, verificați dacă este sau nu, dacă nu - adăugați, după care deschideți toate mesele necesare și începeți

Ie se pare că progul poate aluneca 2 variante de tabele: vechi (fără câmp) și unul nou (cu un câmp), dar ar trebui să se ordone și, dacă aceasta, de la masa veche să facă una nouă?
Dacă da, atunci obțineți informații despre câmpurile tabelului de intrare (până la începerea programului este neclar ce: nou sau vechi), puteți deschide pur și simplu interogarea Select * din tabel și sortați prin colecția câmpurilor de seturi de date.
Deși ideea însăși este tulbure, tk. neponyatki ce să facă cu informațiile adăugate la acest câmp nou în sesiunea anterioară cu programul. IMHO, trebuie să separi rahatul de cămașă. Ie (nu scrieți neapărat un program pentru acest lucru) efectuați o verificare și restructurați (dacă este necesar) tabelul și executați-l fie cu pixuri (o singură dată), fie chiar înainte de a rula programul. Și programul însuși funcționează deja cu aceeași structură. Altfel, IMHO, va fi terci.

Asta este punctul, că programul poate fi alunecat la masa veche și în orice moment. Prin urmare, nu este de până la mâini să facă orice, programul ar trebui să se descopere el însuși și, dacă nu, adăugați un câmp, în mod natural, în înregistrări vechi datele acestui nou domeniu va fi zero. După această operație, seturile de date sunt deschise pentru lucrul cu acest câmp

1. Deschideți baza de date
2. Rulam o interogare pentru un eșantion de tot cu o condiție falsă (deoarece nu avem nevoie de date, ci despre câmpuri)
3. Căutăm o colecție de seturi de date open-fantom open și expuneți semnul este / nu
4. Închideți cererea
5. Dacă semnul "nu există fantomă", atunci
# xA0; 5.1. Translatăm tabelul într-un mod exclusiv
# xA0; Desenați o interogare dinamică ALD DDL care ar trebui să adauge un câmp în tabel
# xA0; Rulați interogarea și verificați rezultatul. În cazul în care fals, apoi chenyat vyakayem și termina prog.
# xA0; Scoatem din tablete exclusiv
6. Principala activitate a programului (tabelul este deja în câmpul necesar)

Trebuie să înțelegeți că programul este exclusiv pentru un singur utilizator?

mb asa?
dacă Table1.FindField ("SomeField") = zero, atunci Query1.Execute
Respectiv. Interogarea1 conține o interogare ALTER TABLE.

Și ce despre exclusivitate?

Serge. doriți să vedeți reluarea / repetarea a ceea ce ați scris deja despre el. )))

Eu nu lucrez cu Paradox, pentru DBF Mă uit la structura de antet de bază de date. Cred că puteți compara cele două capace de masă. Și adăugați câmpurile care lipsesc.

Mai poți încă pe cizme. Sau o blană. Ne întâlnim pe haine?
Într-un subiect este necesar un program;)

În primul rând, unde este "capacul" aici. Titlul, adică parte a fișierului dbf, unde este scris infa despre structura tabelului (inclusiv descriptorii câmpurilor) ca antet.
Și într-adevăr. cod ciudat. Are un fel de dușumea lui Dosoviy

O pălărie este de fapt ceva care se vede în partea de sus (la început) a unui lucru: un raport, de exemplu. În grilă, în general, ceea ce numiți un capac este numit un titlu sau un țăran muncitor. # xA0; Cu structura (în "cap") a tabelelor de date pe care această grilă afișează, acest antet poate avea foarte puține în comun.

> Încă o dată o să fac o rezervare - lucrez numai cu DBF

Sunt trist pentru tine.

> Am citat, codul numai pentru a determina structura bazei de date. La începutul antetului veți găsi toate informațiile despre baza de date.

În primul rând, nu despre baza de date. dar numai despre masă și, în al doilea rând, nu pe toate.

> Sugerați cum totuși doriți să determinați cu precizie lungimea câmpurilor de tip Num de dimensiune 18.3? Tipul flotorului nu are o dimensiune reală, este un punct plutitor.

Nu voi oferi nimic. În plus, vă pot trimite la numeroase docuri în diferite formate, motoare și servere de baze de date
cu scopul de a înțelege metoda fizică de stocare și modalitățile de interpretare și afișare a numerelor în tabelele bazei de date.
În dbf, în opinia mea, totul este întotdeauna stocat într-o formă simbolică sau am greșit?

2. Rulam o interogare pentru un eșantion de tot cu o condiție falsă (deoarece nu avem nevoie de date, ci despre câmpuri)

De ce asemenea perversiuni?
Fielddefs.Update - și toate metadatele din buzunar.

Pentru a face acest lucru, deschideți masa. Cererea nu o deschide, asta e diferența. Apropo, deschiderea mesei la timp va fi mai lungă (oricum pentru Paroksa). Cererea va fi executată aproape instantaneu, chiar dacă pe alt computer.

Pentru a face acest lucru, deschideți masa.

Pentru a face acest lucru, nu deschideți masa

Aceasta înseamnă că metoda Open nu trebuie să fie apelată.
Desigur, masa va fi deschisă ca fișier, precum și în cazul selectării * din tabelul unde 0 = 1

Sunt de acord. Doar că folosesc alte mijloace. Apropo, dacă te uiți la TDataSet, atunci, probabil, el însuși face cereri similare, nu?

Memorie: 0,78 MB
Sincronizare: 0.084 sec

Articole similare