_SQLSetColDirty

(   NumSet  : Word;
    ColName : StringZ;
    Value   : Byte) : Byte

Sloupec se jménem ColName v tabulce NumSet označí tak, že bude ukládán do databáze i v případě, že nedojde k jeho změně. Sloupec musí být předtím připojen k proměnné makra procedurou SQLBind.

Jestliže bude sloupec existovat a bude správně připojen k proměnné makra, vrací funkce true.

Úprava stávající věty v tabulce

Používají se funkce

Za normálních okolností při update nezměněného sloupce nedojde k jeho vložení do update příkazu, pokud nepoužijete _SQLSetColDirty:

dim DB  : Word;
dim Set : Word;
dim S1  : String;
dim S2  : String;

SQLDBOpen(DB, "Test", "", "");
SQLOpen(DB, Set);
SQLBind(Set, "COL1", SQL_VARCHAR, S1);
SQLBind(Set, "COL2", SQL_VARCHAR, S2);
SQLSelect(Set, "TEST_TAB", "IDENT=10", "IDENT");
if _SQLFirst(Set) then
  if _SQLEdit(Set) then
    S1 := "ABCD";
    { S2 neměníme }
    _SQLSetColDirty(Set, "COL2", true);
    _SQLUpdate(Set);
  endif
endif
SQLClose(Set);
SQLDBClose(DB);

Přidání nové věty do tabulky

Při vkládání nové řádky, která obsahuje prázdné řetězce, nebudou tyto řetězce ukládány, ale v tabulce po přidání zůstane NULL. To může vadit tam, kde jsou sloupce, které nemohou mít hodnotu NULL. Pak je potřeba použít _SQLSetColDirty:

dim DB  : Word;
dim Set : Word;
dim S1  : String;
dim S2  : String;

SQLDBOpen(DB, "Test", "", "");
SQLOpen(DB, Set);
SQLBind(Set, "COL1", SQL_VARCHAR, S1);
SQLBind(Set, "COL2", SQL_VARCHAR, S2);
SQLSelect(Set, "TEST_TAB", "IDENT=-1", "IDENT");
if _SQLAddNew(Set) then
  S1 := "ABCD";
  S2 := "";
  _SQLSetColDirty(Set, "", true);
  _SQLUpdate(Set);
endif
SQLClose(Set);
SQLDBClose(DB);

Jestliže zadáte jméno sloupce prázdné, budou jako DIRTY označeny všechny sloupce.

Podívejte se na: SQL makrofunkce

Příklad