S cizφmi tabulkami (tabulkami p°ipojen²mi do WinBase602 z cizφho ODBC zdroje dat) lze z prost°edφ WinBase602 pracovat prost°ednictvφm tzv. ODBC kurzor∙ stejn²m zp∙sobem, jako p°i pou₧itφ b∞₧n²ch kurzor∙, a₧ na n∞kolik (nφ₧e popsan²ch) v²jimek.
Prßce s daty se liÜφ podle toho, zda je zapnuto Pou₧itφ tabulek z aktivnφho zdroje dat Φi nikoli.
Open_cursor
, Open_sql_cursor
, Open_sql_parts
, Open_cursor_direct
a SQL_execute
jsou automaticky p°esm∞rovßny na aktivnφ zdroj dat. To znamenß, ₧e vytvo°φte-li programem tabulku, vznikne v aktivnφm zdroji dat, a otev°ete-li kurzor, bude to automaticky ODBC kurzor, pracujφcφ s cizφmi tabulkami. Majφ-li b²t zm∞ny provedenΘ SQL p°φkazem viditelnΘ na °φdicφm panelu aplikace, je nutnΘ po volßnφ funkce SQL_execute
volat funkci Relist_objects
.ODBC kurzor se deklaruje jako prom∞nn² kurzor a otevφrß se funkcφ Odbc_open_cursor
. ╚φslo spojenφ na zdroj dat pot°ebnΘ pro otev°enφ ODBC kurzoru lze zφskat jednou ze t°φ funkcφ: Odbc_find_connection
, Odbc_create_connection
, Odbc_direct_connection
. AplikaΦnφ program by m∞l volat nejprve funkci Odbc_find_connection
a vrßtφ-li nulu, pak teprve funkce Odbc_create_connection
nebo Odbc_direct_connection
. Spojenφ vytvo°enß funkcemi Odbc_create_connection
a Odbc_direct_connection
zaniknou p°i skonΦenφ b∞hu programu.
Ve vnit°nφm programovacφm jazyce lze ODBC kurzor pou₧φt pro Φtenφ a zßpis hodnot sloupc∙ a pro Φtenφ a zßpis cel²ch zßznam∙. Ke sloupc∙m lze p°istupovat pomocφ typu zßznam uvedenΘho v deklaraci kurzoru nebo beztypov²m zp∙sobem.
ODBC kurzor se dß pou₧φt ve funkcφch:
Read
, Write
, Read_record
, Write_record
(pouze externφ jazyky);Delete
, Insert
, Append
;Rec_cnt
, Delete_all_records
;Restore_cursor
, Close_cursor
;Read_lock_record
, Read_unlock_record
, Write_lock_record
, Write_unlock_record
;Funkce Delete
a Insert
mohou nefungovat ve spoluprßci s n∞kter²mi starÜφmi ODBC drivery. Drivery, kterΘ pln∞ podporujφ API funkci SQLSetPos
by nem∞ly Φinit obtφ₧e. Funkce pro zamykßnφ zßznam∙ pracujφ s jedin²m druhem zßmk∙, kter² nabφzφ ODBC, proto funkce Read_lock_record
d∞lß totΘ₧ co Write_lock_record
.
ODBC kurzor se nedß pou₧φt ve funkcφch:
Undelete
;Read_lock_table
, Read_unlock_table
, Write_lock_table
, Write_unlock_table
;C_sum
, C_max
, C_min
, C_avg
, C_count
, Look_up
;Translate
, Super_recnum
, Add_record
;Set_fcursor
, Relate_record
.ODBC kurzor se zavφrß funkcφ Close_cursor
. P°i skonΦenφ b∞hu programu ve vnit°nφm jazyce se zav°ou vÜechny neuzav°enΘ kurzory.
P°φklad:
var c : cursor; conn, rec : integer; begin conn:=Odbc_find_connection('WinBase602: D:\WB602'); if conn=0 then halt; if Odbc_open_cursor(conn, c, 'SELECT * FROM odbc_table') then halt; if not Rec_cnt(c,rec) then
Info_box('PoΦet zßznam∙', int2str(rec));
rec:=Insert(c); c[rec].attr:=56; if not Rec_cnt(c,rec) then
Info_box('PoΦet zßznam∙', int2str(rec));
if Restrict_cursor(c, 'attr > 30') then halt; if not Rec_cnt(c,rec) then
Info_box('PoΦet zßznam∙', int2str(rec));
Restore_cursor(c); if not Rec_cnt(c,rec) then
Info_box('PoΦet zßznam∙', int2str(rec));
Close_cursor(c); end.
Viz takΘ: | ODBC |
WinBase602 jako ODBC klient | |
╪φdicφ panel - ODBC spojenφ |