begin
EncodeFieldDesc(PFieldDescList(pFieldDesc)^[I], Name,DataType, Size);
end;
{ ΡΠΈΠΏ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° nil, Ρ.ΠΊ. ΠΏΠΎΠ»Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ }
Check(DbiTranslateRecordStructure(nil, iFields, pFieldDesc, nil, nil, pFieldDesc));
{ Π·Π΄Π΅ΡΡ hCursor ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ }
Check(DbiCreateInMemTable(DBHandle, szTblName, iFields, pFieldDesc, hCursor));
finally
if pFieldDesc <> nil then FreeMem(pFieldDesc, iFields * SizeOf(FLDDesc));
SetDBFlag(dbfTable, False);
end;
end;
end.
{ΠΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²Π·ΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠΌΠΎΡΠΈ ΠΠ»ΠΎΠΉΠ΄Π°!}
ΠΠΎΠΈΡΠΊ
FindKey Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ
Delphi 1
with Table1 do
begin
SetKey;
FieldByName('State').AsString := 'CA';
FieldByName('City').AsString := 'Scotts Valley';
GotoKey;
end;
ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Findkey Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ DBase Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ.
oEmetb.indexName:='PrimaryKey';
if oEmeTb.findkey([prCLient,prDiv,prEme]) then
Π³Π΄Π΅ findkey ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ Primary Keyfields.
Π― ΠΎΠ±ΡΠ°ΡΠ°Ρ Π²Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΈΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° (Index) ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ, ΡΠ°ΠΊ ΡΡΠΎ Π±ΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ oEmeTb.indexfieldnames, Π½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΠΏΠΎΠ»ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΈΡΠ΅ΡΠ΅.
oEmetb.indexfieldNames:='EmeClient;EmeDiv;EmeNo';
if oEmeTb.findkey([123,'a',96]) then
ΠΠΎΠΈΡΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΡΠ°Π²Π»Π΅Π½Π°
ΠΡΠ»ΠΈ Π²Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Edit) ΠΈΠ»ΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ (Insert), ΡΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° Π²Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΠΏΠΎΡΡΠΈΠ½Π³ Π·Π°ΠΏΠΈΡΠΈ. Π, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠ° (Π½Π΅ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΠΈ) Π·Π°ΠΏΠΈΡΠΈ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ. Π‘ΠΏΠΎΡΠΎΠ± ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ TTable, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ, ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ ΠΏΠΎ Π½Π΅ΠΉ ΠΏΠΎΠΈΡΠΊ. ΠΡΠΎΡ ΠΏΡΡΡ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ.
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ Π΄Π²ΡΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ TTable (ΠΎΠ±Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΠ°Π±Π»ΠΈΡΡ). ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°, Π° Π²ΡΠΎΡΠΎΠΉ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΡΠ° Β«ΠΊΠ»ΡΡΠ΅Π²Π°ΡΒ» ΡΠ°Π±Π»ΠΈΡΠ° BDE Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΡΠ»Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΈΠΌ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΠΉ ΠΊΠ»ΡΡ. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Database Desktop.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ»Ρ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ (Primary Index). ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ DB-ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ Β«Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΠΈΒ».
ΠΠΎΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π²Π²Π΅ΡΡΠΈ ΡΠ°ΡΡΡ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Π° (ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅). ΠΠ°ΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Ρ Π΄Π΅Π»Π°Π» FindKey. ΠΡΠ»ΠΈ ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΡΡ, ΡΠ΅ΡΠ΅Π· MessageDlg Ρ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» Π΅Π³ΠΎ Π½Π° ΡΠΎΡΠΌΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π΅ΡΠ»ΠΈ FindKey Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡ, dbCursor Π½ΠΈΠΊΡΠ΄Π° Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ, ΠΈ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ° Π½Π΅ Π½ΡΠΆΠ½Π°. ΠΡΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π°, ΠΎΠ½Π° Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° Π½Π° ΡΠΎΡΠΌΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΌΠΎΠ³ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Table.Append;
Table.FieldByName('KeyField').AsString := UserEntry;
{ β¦ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ Π·Π°ΠΏΠΈΡΠΈ β¦ }
{ Π² ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ½ΠΎΠΏΠΊΠ° Cancel Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ Π²Π²ΠΎΠ΄ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. }
Π ΠΌΠΎΠ΅ΠΉ ΡΠΎΡΠΌΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»Π΅ Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠ»ΡΡΠ΅ΠΌ Π²ΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ (disabled) ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ. Π¦Π΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½Π° :-).
ΠΠΎΠΈΡΠΊ ΡΡΠ°Π· ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ
Delphi 1
ΠΠ»Ρ ΡΠ΅ΠΊΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ DBmemo. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π»ΡΠ΄Π΅ΠΉ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Β«Π½Π° Π»Π΅ΡΡΒ» (ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡ), Π½ΠΎ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅-ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅Π»Π°ΡΡ Β«Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΌΠ°Π»ΡΡΠΈΠΊΠΈΒ» (ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π±ΠΎΠ»ΡΡΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ):
1. ΠΏΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΠΈ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΎΠ½Π° ΡΠΊΠ°Π½ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² (ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ², ΡΠ°ΠΊ ΠΈ Π²ΡΠ΅Ρ ΡΠ»ΠΎΠ², Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΠ΅ΡΡ Π² ΡΡΠΎΠΏ-Π»ΠΈΡΡΠ΅ [ΠΏΡΠΈΠΌΠ΅Ρ: Β«theΒ», Β«ofΒ», Β«and"])
2. ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π²Π½ΠΎΡΡΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² ΡΠΎ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° Π½ΠΎΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«hangΒ»,46 ΠΈΠ»ΠΈ Β«PCΒ»,22.
3. ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π΅Π»Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡ, ΠΌΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ, Π³Π΄Π΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«hangΒ» ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ Π½ΠΎΠΌΠ΅ΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ 11, 46 ΠΈ 22, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Β«PCΒ» β Π·Π°ΠΏΠΈΡΠΈ Ρ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌΠΈ 91, 22 ΠΈ 15.
4. Π·Π°ΡΠ΅ΠΌ ΠΌΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ ΡΠΈΡΠ»Π° ΠΈΠ· Π²ΡΠ΅Ρ ΡΠΏΠΈΡΠΊΠΎΠ² c ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ 22 (Π² ΡΠ»ΡΡΠ°Π΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° AND), ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ 11, 15, 22, 46 ΠΈ 91 (Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° OR). ΠΠ°ΡΠ΅ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΠΉΡΠ΅ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΠ΅ ΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ.
5. Π΄Π»Ρ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«hangΒ»,"kaputΒ»), ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅ ΠΏΠΎΠΈΡΠΊ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΈΡ ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠΏΠΈΡΠΊΡ ΠΊΠ°ΠΊ ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ.
6. ΡΠ»ΠΎΠ²Π°, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΎΠ±ΡΠΈΠ΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«hangΒ» ΠΈ Β«hangedΒ»), ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠ°ΠΌΠΈ, ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΈΡΡΠ΅ΠΌ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ· ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΉ ΡΠ»ΠΎΠ², Π²ΡΡΠΈΡΠ»ΡΡ ΠΊΠΎΡΠ΅Π½Ρ ΠΏΠΎ ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»ΠΎΠ²Ρ Β«hangΒ» ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΡΠ±ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, ΡΡΠΈ ΠΏΠ΅ΡΠ²ΡΠ΅ 4 Π±ΡΠΊΠ²Ρ ΡΠ°Π²Π½Ρ Β«hangΒ»).
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ½ΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠ΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ², ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π΄Π°ΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° (ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ΄Π°ΡΠ½ΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΠΆΠΈΡΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈ ΠΏΠΎΠΈΡΠΊΠ° Nexus, Lycos ΠΈΠ»ΠΈ WebCrawler, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΠ΅ ΡΠΎΡΠ½ΠΈ ΡΡΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ).
dBase
Π’Π΅ΠΊΡΡΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ
Delphi 1
{ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ xBase. Π’ΡΠ΅Π±ΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ DBITYPES, DBIPROCS, ΠΈ DBIERRS Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. Π€ΡΠ½ΠΊΡΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π° Π²Ρ ΠΎΠ΄Π΅ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡΠΈΠΏΠ° TTable (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Table1).}
function Form1.Recno(oTable: TTable): Longint;
var
rError: DBIResult;
rRecProp: RECprops;
szErrMsg: DBIMSG;
begin
Result := 0;
try
oTable.UpdateCursorPos;
rError := DbiGetRecord(oTable.Handle, dbiNOLOCK, nil, @rRecProp);
if rError = DBIERR_NONE then Result := rRecProp.iPhyRecNum
else case rError of
DBIERR_BOF: Result := 1;
DBIERR_EOF: Result := oTable.RecordCount + 1;
else
begin
DbiGetErrorString(rError, szErrMsg);
ShowMessage(StrPas(szErrMsg));
end;
end;
excepton
E: EDBEngineError do ShowMessage(E.Message);
end;
end;
ΠΠ°ΠΊ ΠΎΡΠΊΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ dBase, Π΅ΡΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΉΠ» ΠΈΠ½Π΄Π΅ΠΊΡΠ°?
Nomadic ΡΠΎΠ²Π΅ΡΡΠ΅Ρ:
ΠΠ»Ρ dBase-ΡΠ°Π±Π»ΠΈΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΡΡ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ. ΠΠ»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π΄Π»Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ Π² ΡΠ°ΠΌΠΎΠΌ dbf-ΡΠ°ΠΉΠ»Π΅ ΠΈ ΠΏΠΎΡΠ»Π΅ Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π·Π°Π½ΠΎΠ²ΠΎ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΠΉΠ»Π° dbf ΠΏΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ 28(dec) Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡ 0.
ΠΠΎ Π΄ΡΡΠ³ΠΎΠΌΡ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²ΡΡ ΠΎΠ΄ΠΈΡ(Ρ Π΄ΠΎΠ»Π³ΠΎ Π±ΠΈΠ»ΡΡ) β Π²ΠΎΡ Π΄Π»Ρ Paradox ΡΠ°Π±Π»ΠΈΡ Π²ΡΠ΅ Ok.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ BDE Callbacks. ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Delphi 2.0, Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ»:
=== Callback.pas ===
unit Callback;
interface
uses BDE, Classes, Forms, DB, DBTables;
type
TForm1 = class(TForm)
Table1: TTable;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
CBack: TBDECallback; // ΠΎΠΏpΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ BDE CallBack
CBBuf: CBInputDesc; // ΠΏpΠΎΡΡΠΎ Π±ΡΡΠ΅p
function CBFunc(CBInfo: Pointer): CBRType; // Callback-ΡΡΠ½ΠΊΡΠΈΡ
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Session.Open; // Π ΡΡΠΎ Π²pΠ΅ΠΌΡ ΡΠ΅ΡΡΠΈΡ Π΅ΡΡ Π½Π΅ ΠΎΡΠΊpΡΡΠ°
CBack := TBDECallback.Create(Session {HΠ°ΠΏpΠΈΠΌΠ΅p}, nil, cbINPUTREQ, @CBRegBuf, SizeOf(CBBuf), CBFunc, False); // ΠΠΏpΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Callback
Table1.Open;
//^^^^^^^^^^^ - Π·Π΄Π΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΎΡΠΈΠ±ΠΊΠ° Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ, etc.
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
CBack.Free; // ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ CallBack
end;
function TForm1.CBFunc(CBInfo: Pointer): CBRType;
begin
with PCBInputDesc(CBInfo)^ do case eCbInputId of
cbiMDXMissing {, cbiDBTMissing - ΠΌΠΎΠΆΠ½ΠΎ Π΅ΡΡ ΠΈ ΠΎΡΠΈΡΠ°ΡΡ BLOB-ΠΏΠΎΠ»Ρ}: