Celulele Dbgrid nu sunt editate


Un set de înregistrări editabil trebuie să conțină un câmp - un identificator pentru o înregistrare cu valori unice, utilizat pentru a asocia înregistrările tabelei bazei de date și pentru a seta rânduri. Trebuie să includeți în mod explicit acest câmp în lista câmpurilor solicitate din interogarea SELECT. Pentru diferite DBMS-uri, există diferite abordări pentru implementarea mecanismului de conectare a înregistrărilor de tabele și de setare a rândurilor.


- Unele DBMS au câmpuri "ascunse" - identificatori de înregistrare pentru fiecare tabelă stocată (ROWID în Oracle, OID în PostgreSQL). Aceste câmpuri sunt create implicit, chiar dacă nu ați inclus descrierile sale în lista de câmp a instrucțiunii CREATE TABLE.

PS. Akella și alți membri ai forumului, întrebarea mea este relevantă.


Nu, deci nu vrea identitatea.
Am fost aici pe un alt forum sugerând că acest lucru este posibil atunci când câmpurile cheie nu sunt înregistrate.
Deși se pare că nu este cazul. conectat la baza de date Acces, cu un tabel fără câmpuri cheie, editează toate regulile.

și prima interogare este un fel de "uneditable" este obținut.

deci aceasta este doar o interogare editabilă.

Adăugat mai târziu:
Kbl4AH. în teorie, dacă mai multe mese participă la interogare, atunci o astfel de interogare nu va fi corectată. Ei bine, da, și câmpul cheie ar trebui să fie, altfel cum să cunoască componentele pe care le înregistrează pentru a le edita. Dacă nu există un câmp cheie, atunci există pericolul de a edita mai multe intrări. Imaginați-vă că avem o interogare:

(nici numele, nici telefoanele nu sunt chei primare)
În grilă veți vedea 2 câmpuri. Acum, imaginați-vă că editați prima înregistrare, în care există valori:
Vasya Navel | 777-0-777

Actualizarea SQL a unei astfel de interogări va fi:

în acest caz, nu numai ediția curentă poate fi editată, ci și alte câteva care se încadrează în clauza unde se află

bine, poate exemplul este un pic prost, dar sper ca el, ca atare, explica situatia cu lipsa unui domeniu cheie

Celulele Dbgrid nu sunt editate


deci despre editarea tabelelor combinate nu am nici o intrebare.
Am o întrebare: de ce editează ADOdataet (și de ce se editează, dacă rowid nu este selectat) selectați * din interogarea tabelului și ORACldataset nu. cererea este aceeași. totuși. probabil, în OracleDataSet doar corect implementate pentru a distinge în mod clar între interogări editabile și care nu pot fi editate.

Am fost aici la un alt forum sugerând că acest lucru este posibil atunci când câmpurile cheie nu sunt înregistrate. Deși se pare că nu este cazul. conectat la baza de date Acces, cu un tabel fără câmpuri cheie, editează toate regulile.


astfel încât în ​​citat este exact ceea ce este scris!

și de ce pentru o astfel de opțiune pe care ați scris-o

nu aveți nevoie de 24, dar pentru a face o cerere prin ea.

Ce faceți prin intermediul componentelor se poate face printr-o interogare și nu există nicio diferență în ceea ce privește ceea ce faceți dacă aveți nevoie de 24 de elemente și dacă nu faceți acest lucru nu este necesar.


Puteți face 24 astfel de linii ADOquery1.FieldByName ('id_poselok'). AsString: = '4';
Mai bine, pentru a numi câmpul, a fost luată și plasată aici ADOquery1.FieldByName ('id_poselok') .asString: = '4'; dând clic pe celula care aparține acestui câmp.
Pe scurt, cu alte cuvinte, vreau sa fac ceea ce DBNavigator /

Și dacă să faceți prin cerere
Query1.SQL.add ( 'inserați în poselok ( "Nu",) valorile "name" (' '' + edit1.Text + '' '' '' + edit2.Text + '' ')');
Apoi nu știu cum să conduc valorile în 24 de valori și apoi să schimb tabelele și numai 2.

să fim în ordine

1) ce tipuri de câmpuri

2) codul pe care îl utilizați pentru a adăuga ceva în acest moment.

Ei bine, de ce ar trebui să listați toate mesele cu toate câmpurile)
1) Număr (Integer), Nume (caracter variabil (64))
2) Nu folosesc nimic încă) Am ales fie prin tip de cerere

Sau în acest fel

Puteți scrie acest cod pe buton, numai câmpurile pe care le numiți și, în consecință, în Elementele [] puneți indicele necesar
deci iată lansarea
faceți clic pe dbgrid, după care apăsați pe săgeată, apare o linie, înregistrați date noi acolo, apoi faceți clic pe buton, toate. Am scris ADOQuery1.Edit; dacă nu trece la modul de editare, acesta deschide totul pentru scriere.
ar trebui să funcționeze
Haide, încercați mai repede.

Adăugat mai târziu:
indiciile din Elementele [] pe care le puneți, la primul câmp 0, la al doilea 1, la al treilea 2, cred că este clar.
amenințare
ar trebui să lucreze, deși eu nu frecați în dolphi)))

Celulele Dbgrid nu sunt editate


Pe scurt, cu alte cuvinte, vreau sa fac ceea ce DBNavigator /

Puteți scrie acest cod pe buton, numai câmpurile pe care le numiți și, în consecință, în Elementele [] puneți indicele necesar

deci iată lansarea

faceți clic pe dbgrid, după care apăsați pe săgeată, apare o linie, înregistrați date noi acolo, apoi faceți clic pe buton, toate. Am scris ADOQuery1.Edit; dacă nu trece la modul de editare, acesta deschide totul pentru scriere.

Haide, încercați mai repede.

indiciile din Elementele [] pe care le puneți, la primul câmp 0, la al doilea 1, la al treilea 2, cred că este clar.

ar trebui să lucreze, deși eu nu frecați în dolphi)))


Există o astfel de problemă, când am introdus valoarea în primul câmp, trec la cea de-a doua și ceea ce am introdus în primul este resetat, ce a fost) În general, nu pare să funcționeze așa.