Refresh() -> Não faz a releitura do registro na base de dados, basicamente apenas atualiza a tela com os dados que estavam guardados no cache.

Exemplo: (fonte Microsoft)
O seguinte exemplo sobrescreve o método write do datasource e então atualiza os registros em um datasource diferente após gravar os dados.

1
2
3
4
5
6
public void write()
{
    super();
    EPParameters_ds.research();
    EPParameters_ds.refresh();
}

RefreshEx([anytype pos]) -> Atualiza a visualização de registros especificos. O paramêtro pos é opcional e representa o registro a ser atualizado. Se o valor especificado for -1, todos os registros serão atualizados, se o valor especificado for -2, todos os registros marcados serão atualizados. O default é -2.

Exemplo: (fonte msdn)
O seguinte exemplo atualiza todos os registros exibidos na grid porque usa o -1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void setColor(OLE_Color _color)
{
    GanttColorTable searchGanttColorTable;
    ;
    ganttColorTable.Color = _color;
    ganttColorTable_ds.write();
    for (searchGanttColorTable = ganttColorTable_ds.getFirst();
    {
        searchGanttColorTable;
        searchGanttColorTable = ganttColorTable_ds.getNext())
        if (searchGanttColorTable.RecId == ganttColorTable.RecId)
        {
             ganttColorTable_ds.
                 clearDisplayOption(searchGanttColorTable);
        }
    }
    ganttColorTable_ds.refreshEx(-1);
    ganttColorTable_ds.active();
}

Reread() -> Irá fazer a releitura do registro ATUAL com as últimas alterações da database. Não devemos usar esse comando quando adicionarmos ou removermos registros na tabela, ele só serve para atualizar quando fazemos alterações no registro através de um .update() via código ou algum outro processo fez algo semelhante.

Exemplo:
O seguinte exemplo usa o método Reread() como parte do método que é usado para para atualizar a tabela.

1
2
3
4
5
6
7
8
9
10
void doRefresh()
{
    salesTable_ds.reread();
    salesTable_ds.refresh();
 
    salesLine_ds.reread();
    salesLine_ds.refresh();
 
    interCompanyPurchSalesReference_ds.executeQuery();
}

Research() -> Irá retornar a query atual do formulário, irá atualizar a grid com os registros novos / removidos / alterados. Serão mantidos todos os filtros e ordenação do formulário.

Exemplo:
O exemplo abaixo atualiza o datasource após as alterações.

1
2
3
4
5
6
7
8
9
10
public void delete()
{
    super();
    if (aifWebsites.RecId != 0)
        element.adjustGUI(true);
    else
        element.adjustGUI(false);
 
    this.research();
}

ExecuteQuery() -> Deve ser usado se você modificar a query via código e precisar atualizar o que está sendo exibido no formulário.

Exemplo:
O seguinte exemplo executa a query do datasource em resposta a ativação de uma tab page.

1
2
3
4
5
6
public void pageActivated()
{
    ;
    monday_ds.executeQuery();
    super();
}

[]s
Pichler