рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрд▓реНрдлреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХреИрдЪ рдбреАрдмреАрдПрдордПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛


рдбреЗрд▓реНрдлреА рдХреЗ рд╕реНрдерд╛рдпреА рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд╛рд░ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдбреЗрд╕реНрдХрдЯреЙрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдордВрдЪ рдЬреАрд╡рд┐рдд рд╣реИ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣реИ, рдФрд░ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде, рдпрд╣ рдПрдХ рджреВрд╕рд░реА рд╣рд╡рд╛ рднреА рд▓реЗрддрд╛ рд╣реИ рдФрд░ рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рд╣рдЬрд╛рд░реЛрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЙрдкрдХрд░рдг рдмрдирд╛ рд╣реБрдЖ рд╣реИред
рдХрд┐рд╕реА рднреА рдЕрдиреНрдп DBMS рдХреЗ рд░реВрдк рдореЗрдВ, рдбреЗрд▓реНрдлреА Cach├й DBMS рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИред

рдбреЗрд▓реНрдлреА рд╕реЗ, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрдЪ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рдпрд╣ рдЖрд▓реЗрдЦ Cach├й DBMS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред


рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдЫреЛрдЯреЗ VBScript рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╕реАрдзреЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рддреНрдпрдХреНрд╖ рдЕрднрд┐рдЧрдо рдЙрджрд╛рд╣рд░рдг:
Set f = CreateObject("VISM.VisMCtrl.1") f.Server="CN_IPTCP:localhost[1972]:_system:@ SYS" f.NameSpace="SAMPLES" f.Execute("=$zv") '   WScript.Echo f.VALUE 

рд╕рдВрдмрдВрдзрдкрд░рдХ рдкрд╣реБрдВрдЪ рдЙрджрд╛рд╣рд░рдг:
 Set cn=Createobject("ADODB.Connection") cn.ConnectionString="DRIVER={InterSystems ODBC35}; SERVER=127.0.0.1; PORT=1972; DATABASE=SAMPLES; UID=_system; PWD=SYS" cn.open WScript.Echo "Succesfully!" 

рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рдЙрджрд╛рд╣рд░рдг:
 Set f = CreateObject("CacheActiveX.Factory") Set rs = CreateObject("CacheActiveX.ResultSet") If Not f.IsConnected() Then f.Connect("cn_iptcp:127.0.0.1[1972]:SAMPLES:_SYSTEM:SYS") Set rs=f.DynamicSQL("select TOP 3 * from Sample.Person") rs.Execute() while rs.Next WScript.Echo rs.Get("SSN") '  SSN      Sample.Person wend rs.Close() Set person = f.Static("Sample.Person") age=person.CurrentAge(45678) '   Sample.Person WScript.Echo age End If 

рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдЖрдк JScript, Visual Basic, C ++ рдмрд┐рд▓реНрдбрд░, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Cach├й DBMS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреЛрдЯ: рдЬрд╛рд╡рд╛ рдФрд░ .NET рдХреЗ рд▓рд┐рдП рдХрдИ рджреЗрд╢реА рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ рдЬреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рджреЗрд░ рд╕реЗ рдФрд░ рдЬрд▓реНрджреА рдмрд╛рдзреНрдпрдХрд╛рд░реА


рдбреЗрд▓реНрдлреА рд╕реЗ рдХрдЫ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ:

рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЕрдкрдиреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╣реИрдВ, рдЬреЛ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рд░рджреНрдж рдХрд░рддреЗ рд╣реИрдВред

рджреЗрд░ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд╕рд╛рде, рдХреЛрдб рд╕рдВрдХреЗрдд рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ; рддрджрдиреБрд╕рд╛рд░, рдХреЛрдб рдореЗрдВ рдЧрд▓рддреА рдХрд░рдиреЗ рдХреА рдПрдХ рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреЛрдб рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдСрдкрд░реЗрд╢рди рдХреА рдЧрддрд┐ рд╢реБрд░реБрдЖрддреА рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝реА рдХрдо рд╣реИред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдореЗрдВ рдпреЗ рдХрдорд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдпрд╛ рдХреИрдЪ рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп , рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЗрди рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░, рдЖрдк рдЗрд╖реНрдЯрддрдо рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рд▓реЗрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЗрд░ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╡рд░реНрдгрд┐рдд рд╣реИред

Cach├й рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ C: \ Program Files \ Common Files \ InterSystems \ Cache \ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

Cach├й 5.1 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, InterSystems рдбреЗрд╡рд▓рдкрд░реНрд╕ рдирдП CacheActiveX.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред CacheObject.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╢реЗрд╖ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ CacheActiveX.dll рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛ред

рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдЬрд┐рдиреНрд╣реЗрдВ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ CacheObject.dll рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдКрдкрд░ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЖрдк рдЕрдиреНрдп рдлрд╛рдЗрд▓реЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:

рдбреЗрд▓реНрдлреА рдореЗрдВ Cach├й Objects ActiveX рдШрдЯрдХреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рдпрд╣ рдЦрдВрдб рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрдВрдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Cach├й DBMS рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд▓реНрдлреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЖрдк рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рджреЗрд░ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ, рдХреНрд░рдо рдореЗрдВ:
  1. рдореЗрдиреВ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдШрдЯрдХ> рдЖрдпрд╛рдд рдШрдЯрдХ ... ;

    рдЫрд╡рд┐

    рдЫрд╡рд┐

  2. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, CacheActiveX 2.0 рдкреНрд░рдХрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ;

    рдЫрд╡рд┐

  3. рд╣рдорд╛рд░реЗ рдмреБрдХрдорд╛рд░реНрдХ рдХрд╛ рдирд╛рдо рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ, рд╕рд╛рде рд╣реА рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ;

    рдЫрд╡рд┐

  4. рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВ, рдЕрдм рддрдХ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд┐рдирд╛;

    рдЫрд╡рд┐

  5. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд░рдг 2-4 рджреЛрд╣рд░рд╛рдПрдВ:
    • CacheActiveX 2.0 рдкреНрд░рдХрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп ;
    • CacheList ActiveX рдирд┐рдпрдВрддреНрд░рдг рдореЙрдбреНрдпреВрд▓ ;
    • рдХреИрд╢реЗрд╡рд┐рдХ рдПрдХреНрдЯрд┐рд╡рдПрдХреНрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдореЙрдбреНрдпреВрд▓ ;
    • рдбреЗрд▓реНрдлреАрдХреЙрд▓рдмреИрдХ 1.0 рдкреНрд░рдХрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп ;
    • рд╡реАрдПрд╕рдПрдо 7.2 рдПрдХреНрдЯрд┐рд╡рдПрдХреНрд╕ рдХрдВрдЯреНрд░реЛрд▓ ;
    • рдЯреАрдПрд▓ 1.0 рдкреНрд░рдХрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп ред
    рдиреЛрдЯ: рдЖрдк рдбреЗрд▓реНрдлреА рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ tlibimp.exe рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдореЙрдбреНрдпреВрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

  6. рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рд╕рднреА рдореЙрдбреНрдпреВрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВред рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдирд╛ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

    рдЫрд╡рд┐

    рдЫрд╡рд┐
    рдиреЛрдЯ: рдбреЗрд▓реНрдлреА рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╣реИ:
    • рдореЗрдиреВ рдЖрдЗрдЯрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ> рдЖрдпрд╛рдд рдкреНрд░рдХрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ... ;

      рдЫрд╡рд┐

    • рдЖрдЧреЗ рдКрдкрд░ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рджреЗрдЦреЗрдВред

рдХрд╕реНрдЯрдо рдкреНрд░реЙрдХреНрд╕реА рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдирд╛


рдпрд╣ рдЦрдВрдб рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Cach├й DBMS рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдкреНрд░реЙрдХреНрд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдкреАрдврд╝реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рджреЗрд░ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдУрдбреАрдПрд▓ рдлрд╝рд╛рдЗрд▓ рдЬрдирд░реЗрдЯ рдХрд░рдиреА рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Cach├й DBMS рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП odl_generator.exe рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг:
 odl_generator.exe -conn cn_iptcp:localhost[1972]:USER:_system:SYS -class-list test.txt -lib-name test -dir MIDL 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЙрдкрдпреЛрдЧрд┐рддрд╛ USER рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИ, test.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХрдХреНрд╖рд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ MIDL \ test.odl рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрддреА рд╣реИ
рдиреЛрдЯ : рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓ CacheActiveX.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред рдкреБрд░рд╛рдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ ODL рдлрд╝рд╛рдЗрд▓ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ExportODL рд╡рд┐рдзрд┐ рдХрд╛ % SYSTEM.OBJ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЙрджрд╛рд╣рд░рдг:
set list= "%Library.Status,Sample.Person"
do $system .OBJ . ExportODL (list, "c:\MIDL\test.odl" , "-d" ,.err)

рддреЛ, ODL рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рд╣реИ, рдЕрдм рдЖрдкрдХреЛ TLB рдлрд╝рд╛рдЗрд▓ рдФрд░ рдлрд┐рд░ PAS рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рджреГрд╢реНрдп C ++ рдбреЗрд╡рд▓рдкрд░ рдХрд┐рдЯ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ midl.exe рдпрд╛ mktypelib.exe рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг:
 midl /I . test.odl /tlb test.tlb tlibimp.exe -C- -P+ -Hr- -Ha- -Hs- -XM- test.tlb 

рдиреЛрдЯ: рдЖрдк Cach├й DBMS MAC рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп


рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рддреЗ рд╣реИрдВ:

///
Class pas.s Extends %SerialObject
{

/// (64-).
Property
aInteger As %Integer ;

/// . - 50 .
Property
aString As %String ;

}

/// .
Class pas.a Extends %Persistent
{

/// aA;
Index
aAIndex On aA;

/// --, "". SQL foreign key.
Relationship
aA As pas.test [ Cardinality = one, Inverse = aChilds ];

Property aInteger As %Integer ;

Property aString As %String ;

}

/// %occIO.inc .
Include
%occIO

/// .
Class pas.test Extends %Persistent
{

/// , ;
Parameter
EXTENTQUERYSPEC As ROWSPEC [ Flags = LIST ] = aBoolean,aInteger,aString,aDate,aTimeStamp" ;

/// (true/false/null);
Property
aBoolean As %Boolean ;

Property aInteger As %Integer ;

Property aString As %String ;

/// ;
Property
aDate As %Date ;

/// +;
Property
aTimeStamp As %TimeStamp ;

/// (CLOB);
Property
aMemo As %GlobalCharacterStream ;

/// (BLOB);
Property
aPhoto As %GlobalBinaryStream ;

/// --, "". SQL .
Relationship
aChilds As pas.a [ Cardinality = many, Inverse = aA ];

/// - ;
///<br> SQL
///<br> -.
Property
aS As pas.s ;

/// - ;
///<br> SQL , , .
Property
aListOfString As list Of %String ;

/// - ;
///<br> SQL , , .
Property
aListOfA As list Of pas.a ;

/// - ;
///<br> SQL .
Property
aArrOfString As array Of %String ;

/// - ;
///<br> SQL .
Property
aArrOfA As array Of pas.a ;

/// .
/// <br> , .
Method
%OnBeforeSave( insert As %Boolean ) As %Status [ Private , ServerOnly = 1 ]
{
;
write "Hello from Cache! (" , $$$CurrentClass , ":" , $$$CurrentMethod , ")" ,!

quit $$$OK
}

/// - : .
Query
test1( ABoolean As %Boolean , AInteger As %Integer , AString As %String , ADate As %Date , ATimeStamp As %TimeStamp ) As %SQLQuery ( CONTAINID = 1 , ROWSPEC = "ID:%String,aBoolean:%Boolean,aInteger:%Integer,aString:%String,aDate:%Date,aTimeStamp:%TimeStamp" ) [ SqlProc ]
{
SELECT %ID , aBoolean , aInteger , aString , aDate , aTimeStamp FROM pas . test WHERE
( aBoolean = :ABoolean or :ABoolean is null )
AND (
aInteger = :AInteger or :AInteger is null )
AND (
aString = :AString or :AString is null )
AND (
aDate < :ADate or :ADate is null )
AND (
aTimeStamp <= :ATimeStamp or :ATimeStamp is null )
}

/// - : ""
///<br> %INLIST.
Query
test2( AList As %List ) As %SQLQuery ( CONTAINID = 1 , ROWSPEC = "ID:%String,aBoolean:%Boolean,aInteger:%Integer,aString:%String,aDate:%Date,aTimeStamp:%TimeStamp" ) [ SqlProc ]
{
SELECT %ID , aBoolean , aInteger , aString , aDate , aTimeStamp FROM pas . test WHERE ID %INLIST :AList
}

/// .
ClassMethod
test3( AList As %List ) As %Status
{
; AList
write AList

;
set ^pastest=AList

quit $$$OK
}

/// .
ClassMethod
test4() As %Status
{
quit $$$ERROR ( $$$GeneralError , "My error!" )
}

/// .
ClassMethod
test5( Arg1... As %List ) As %Status
{
;
write "Invocation has " , $get (Arg1, 0), " element" , $select (( $get (Arg1, 0)=1): "" , 1: "s" ),!
for i = 1 : 1 : $get (Arg1, 0)
{
write :( $data (Arg1(i))>0) "Argument[" ,i, "]:" ,?15, $get (Arg1(i), "<NULL>" ),!
}
quit $$$OK
}

/// : .
/// <br> .
/// <br>:
/// <br><var>ID</var> - ;
/// <br><var>A</var> - ;
/// <br><var>BLOB</var> - ;
/// <br><var>RS1</var> - , Borland ┬о MyBase (DataSnap (TM)) XML DataSet;
/// <br><var>RS2</var> - , Borland ┬о MyBase (DataSnap (TM)) XML DataSet;
ClassMethod
test6(
ID As %String ,
ByRef A As pas.a ,
Output BLOB As %BinaryStream ,
Output RS1 As %CharacterStream ,
Output RS2 As %CharacterStream ) As %Status
{
// ,
set A. aString =999

//
set BLOB= ##class ( %GlobalBinaryStream ). %New ()

//
do BLOB. Write ( "123" )

//
set RS1= ##class ( %GlobalCharacterStream ). %New ()
set RS2= ##class ( %GlobalCharacterStream ). %New ()

// , XML TClientDataSet
set cds= ##class ( %XML.ZMyBaseDataSet ). %New ()

//
do cds. Prepare ( "select * from pas.a where id %inlist ?" )

//
do cds. SetArgs ( $listbuild (1,2,3,9))

// XML
do cds. XMLExportToStream (.RS1)

// ( )
do cds. Close ()
do cds. Prepare ( "select ID,aBoolean,aInteger,aString,aDate,aTimeStamp from pas.test" )
do cds. XMLExportToStream (.RS2)
do cds. Close ()

// ""
quit $$$OK
}

}

рд╣рдо рдЙрдирдХреЗ рд▓рд┐рдП рдФрд░ рд╕рд╛рде рд╣реА рдирд┐рдореНрди рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХрдХреНрд╖рд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ:

рдЕрдм, рдпрджрд┐ рдЖрдк рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ PAS рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрд░реАрдХреЗ рдФрд░ рдЧреБрдг рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ:

рдЫрд╡рд┐
рд╡реГрджреНрдзрд┐

рдиреЛрдЯ : рд╕реНрдЯреНрд░реАрдо рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдХреЛ Cach├й DBMS рд╕реЗ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА CacheActiveX.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╡рд╛рдпрд░реНрдб рд╣реИрдВ рдФрд░ рдЙрддреНрдкрдиреНрди рдкреНрд░реЙрдХреНрд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИрдВред

DBMS Cach├й рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди


рд▓реЗрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ (рдкреБрд░рд╛рдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА):
 var _f:variant; begin _f:=CreateOleObject('CacheObject.Factory'); if _f.Connect(_f.ConnectDlg('+%up')) then ShowMessage('OK') else ShowMessage('ERROR'); 

рджреЗрд░ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА (рдирдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп):
 var _f:variant; begin _f:=CreateOleObject('CacheActiveX.Factory'); if _f.Connect(_f.ConnectDlg('+%up')) then ShowMessage('OK') else ShowMessage('ERROR'); 

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА (рдирдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп):
 type Tfm = class(TForm) f: TFactory; ... begin ... if f.Connect1(f.ConnectDlg('+%up')) then ShowMessage('OK') else ShowMessage('ERROR'); ... 

рдиреЛрдЯ : рдкреБрд░рд╛рдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА % Service_CacheDirect рд╕реЗрд╡рд╛ рдФрд░ рдХреЗрд╡рд▓ рдЕрдирдзрд┐рдХреГрдд рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдирдпрд╛ %% Service_Bindings рдФрд░ рдЕрдиреНрдп рдПрдХреНрд╕реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред

TFactobry рд╡рд░реНрдЧ, рд╕рд╛рде рд╣реА рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг ActiveX API рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдХреЙрд▓рд┐рдВрдЧ рдХреНрд╡реЗрд╢реНрдЪрди рдФрд░ рд╢реБрд░реБрдЖрддреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рддрд░реАрдХреЗ


CallBack рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдбреЗрд▓реНрдлреА рд╕реЗ рдХреЙрд▓рдмреИрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрд▓реНрдлреАрдХреЙрд▓рдмреИрдХ . dll рдлрд╝рд╛рдЗрд▓ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП TCallback рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
 var f:TFactory; Callback1: TCallback; mm: TMemo; ... f.SetOutput(Callback1.OleObject); ... procedure Tfm.Callback1TextChanged(Sender: TObject; const p_bstrText: WideString); begin mm.Lines.Append(p_bstrText); end; 

рд╕рднреА рдбреЗрдЯрд╛ рд╣рдЯрд╛рдПрдВ

  mm.Lines.Text:='KillExtent'#10#13; //   test_(f.Static('pas.test')).SYS_KillExtent(1); a(f.Static('pas.a')).SYS_KillExtent(1); 

рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ, рднрд░рдиреЗ, рд╕рд╣реЗрдЬрдиреЗ рдФрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг

рдЖрдк рд╕рд░реНрдЧреЗрдИ рдХреБрдбрд┐рдиреЛрд╡ рдХреЗ рд▓реЗрдЦ рдореЗрдВ ActiveX рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: ActiveX, CPP- рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ ред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
 ... uses test_TLB, AxCtrls, ComObj, ActiveX, Types; ... const N = 3; var i: integer; _t: test_; _a: A; _s: s; rel: RelationshipObject; listStr: ListOfDataTypes; listA: ListOfObjects; arrStr: ArrayOfDataTypes; arrA: ArrayOfObjects; stream: IDispatch; begin Screen.Cursor := crSQLWait; mm.Lines.Text:='Save'#10#13; try try //     pas.test _t := test_(f.New('pas.test')); //     _t.aBoolean := true; _t.aInteger := 50; _t.aString := ' '; //     null    // (%Integer,%Boolean,%Date  ..) Variant(_t).aDate := nil; _t.aDate := _t.aDateDisplayToLogical('02.03.2001'); //  t.aDate:=StrToDate('02.03.2001'); _t.aTimeStamp := _t.aTimeStampDisplayToLogical('1900-01-02 12:34:55'); //  t.aTimeStamp:=StrToDateTime('02.01.1900 12:34:55'); //     stream := _t.aMemo; ICharStream(stream).Write(' '); stream := nil; //     stream := _t.aPhoto; IBinaryStream(stream).FileRead('C:\test.jpg'); stream := nil; //  N ""   pas.a rel := RelationshipObject(_t.aChilds); for i := 1 to N do begin _a := A(f.New('pas.a')); _a.aInteger := i; _a.aString := 'rel' + IntToStr(i); rel.Insert(_a); _a.SYS_Close; end; _t.aChilds := rel; rel.SYS_Close; //     _s := s(_t.aS_); _s.aInteger := 1; _s.aString := 's1'; _s.SYS_Close; //     .     listStr := ListOfDataTypes(f.New('%ListOfDataTypes')); for i := 1 to N do listStr.Insert('str' + IntToStr(i)); _t.aListOfString := listStr; listStr.SYS_Close; //    pas.a     listA := ListOfObjects(f.New('%ListOfObjects')); for i := 1 to N do begin _a := A(f.New('pas.a')); _a.aInteger := i; _a.aString := 'listA' + IntToStr(i); listA.Insert(_a); _a.SYS_Close; end; _t.aListOfA := listA; listA.SYS_Close; //     .     arrStr := ArrayOfDataTypes(f.New('%ArrayOfDataTypes')); for i := 1 to N do arrStr.SetAt('astr' + IntToStr(i), 'arraykey' + IntToStr(i)); _t.aArrOfString := arrStr; arrStr.SYS_Close; //    pas.a     arrA := ArrayOfObjects(f.New('%ArrayOfObjects')); for i := 1 to N do begin _a := A(f.New('pas.a')); _a.aInteger := i; _a.aString := 'arrayA' + IntToStr(i); arrA.SetAt(_a, 'arraykey' + IntToStr(i)); _a.SYS_Close; end; _t.aArrOfA := arrA; arrA.SYS_Close; //         .   //          // . _t.SYS_Save(0); //          stream := _t.aPhoto; SetOlePicture(img.Picture, IBinaryStream(stream).GetPicture); stream := nil; //    .      //   ,  "" (%sysOrefs). //         //       . _t.SYS_Close; //     _t := nil; mm.Lines.Append('OK'); except on E: Exception do begin mm.Lines.Append(E.Message); end; end; finally Screen.Cursor := crDefault; //      , //      f.ForceSync; end; 

рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд░реЛрдз (рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛)

 var mm: TMemo; rs: TResultSet; ... mm.Lines.Text:='Extent'#10#13; rs.ConnectTo(IResultSet(f.ResultSet('pas.test', 'Extent'))); rs.Execute; while rs.Next do begin mm.Lines.Append(Format('ID = %s',[rs.GetDataAsString(1)])); mm.Lines.Append(Format('aBoolean = %s',[rs.Get('aBoolean')])); mm.Lines.Append(Format('aInteger = %s',[rs.Get('aInteger')])); mm.Lines.Append(Format('aString = %s',[rs.Get('aString')])); mm.Lines.Append(Format('aDate = %s',[rs.Get('aDate')])); mm.Lines.Append(Format('aTimeStamp = %s',[rs.Get('aTimeStamp')])); mm.Lines.Append('-----'); end; rs.Close; rs.Disconnect; 

рдкреНрд░рд╢реНрди рдкрд░реАрдХреНрд╖рдг рез

 var i: integer; ... mm.Lines.Text:='test1'#10#13; rs.ConnectTo(IResultSet(f.ResultSet('pas.test', 'test1'))); rs.SetParam(1, null); rs.SetParam(2, 50); rs.SetParam(3, null); rs.SetParam(4, '03.03.2001'); rs.SetParam(5, '1900-01-02 12:34:55.0'); rs.Execute; while rs.Next do begin for i := 1 to rs.GetColumnCount do mm.Lines.Append(rs.GetColumnName(i)+' = '+rs.GetDataAsString(i)); mm.Lines.Append('-----'); end; rs.Close; rs.Disconnect; 

рдкреНрд░рд╢реНрди рдкрд░реАрдХреНрд╖рдг реи

 var i: integer; syslist: TSyslist; ... mm.Lines.Text:='test2'#10#13; //    %List syslist.Clear; syslist.Add(1); syslist.Add(2); syslist.Add(3); rs.ConnectTo(IResultSet(f.ResultSet('pas.test', 'test2'))); rs.Execute(syslist.DefaultInterface); while rs.Next do begin for i := 1 to rs.GetColumnCount do mm.Lines.Append(rs.GetColumnName(i)+' = '+rs.GetDataAsString(i)); mm.Lines.Append('-----'); end; rs.Close; rs.Disconnect; 

рд╡рд┐рдзрд┐ рдкрд░реАрдХреНрд╖рдг 3ред рдХрдХреНрд╖рд╛ TSysList рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ (Cach├й рдореЗрдВ% рд╕реВрдЪреА)

  mm.Lines.Text:='test3'#10#13; //    %List syslist.Clear; syslist.Add('16'); syslist.Add('42'); syslist.Add('35'); test_(f.Static('pas.test')).test3(syslist.DefaultInterface); 

рд╡рд┐рдзрд┐ рдкрд░реАрдХреНрд╖рдг 4ред рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐

  mm.Lines.Text:='test4'#10#13; try test_(f.Static('pas.test')).test4(); except on E: Exception do begin mm.Lines.Append(E.Message); end; end; 

рдЯреЗрд╕реНрдЯ 5 рд╡рд┐рдзрд┐

  mm.Lines.Text:='test5'#10#13; //    %List syslist.Clear; syslist.Add('16'); syslist.Add('42'); syslist.Add('35'); test_(f.Static('pas.test')).test5(syslist.DefaultInterface); 

рдЯреЗрд╕реНрдЯ 6 рд╡рд┐рдзрд┐

рдпрд╣ рдЙрджрд╛рд╣рд░рдг % XML.ZMyBaseDataSet рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдмреЛрд░рд▓реИрдВрдб┬о рдорд╛рдИрдмреЗрд╕ (рдбреЗрдЯрд╛рд╕реНрдирд╛рдк (рдЯреАрдПрдо)) рдПрдХреНрд╕рдПрдордПрд▓ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ ред рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред

 cds1,cds2:TClientDataSet; ... var _a:a; __a,blob,rs1,rs2:IDispatch; cs1,cs2:ICharStream; begin mm.Lines.Text:='test6'#10#13; try _a:=a(f.OpenId('pas.a','1')); __a:=_a; test_(f.Static('pas.test')).test6('1',__a,blob,rs1,rs2); cs1:=ICharStream(rs1); cs2:=ICharStream(rs2); mm.Lines.Append('A.aString = '+_a.aString); mm.Lines.Append('BLOB.Size = '+IntToStr(IBinaryStream(blob).size)); mm.Lines.Append('RS1.Size = '+IntToStr(cs1.size)); mm.Lines.Append('RS2.Size = '+IntToStr(cs2.size)); cds1.XMLData:=cs1.Data; cds2.XMLData:=cs2.Data; finally _a.SYS_Close; _a:=nil; __a:=nil; blob:=nil; rs1:=nil; rs2:=nil; cs1:=nil; cs2:=nil; f.ForceSync; end; 

рдпреВрдирд┐рдХреЛрдб рдбреЗрдЯрд╛ рдХреЗ % XML.ZMyBaseDataSet рд╡рд░реНрдЧ, рд╕рд╛рде рд╣реА рдЕрдиреНрдп рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЖрд╡реЗрджрди рд╡рд┐рддрд░рдг

рдирдП рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ C: \ Program Files \ Common Files \ InterSystems \ Cache \ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╕рднреА (рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ regsvr32 рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред .exe ред

рдЙрджрд╛рд╣рд░рдг:
 regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\CacheQuery.ocx" regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\CacheFormWizard.dll" regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\CacheList.ocx" regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\CacheActiveX.dll" regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\vism.ocx" regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\TL.dll" 

рд╕реНрд░реЛрдд рдХреЛрдб

Source: https://habr.com/ru/post/In144306/


All Articles