Hi again Wolfgang,

I think I understood what is going wrong with my example after your hint: I have to remove all spaces around the separator and remove also the braces around each entry.
That is the following works fine:

\startseplisttalk
Hacker;Up to date hacking;hacker.jpg
Hacker;Up to date hacking;hacker.jpg
\stopseplisttalk

while the following does not (as far as the filename is concerned):

\startseplisttalk
{Hacker};{Up to date hacking};{hacker.jpg}
Hacker ; Up to date hacking ; hacker.jpg
\stopseplisttalk

Is there a way to make the \defineseparatedlist command to be more tolerant for the filename? 
Best regards: OK

On 30 Jan 2018, at 16:28, Otared Kavian <otared@gmail.com> wrote:


On 30 Jan 2018, at 15:54, Wolfgang Schuster <schuster.wolfgang@gmail.com> wrote:
[…]

Use the command key which grabs the content of each column as argument (i.e. your commands needs as many arguments as your table has columns):

\defineseparatedlist
  [seplisttalk]
  [separator={;},
   command=\maketalk]


Thanks Wolfgang! That fixes the issues concerning the entries which are text, but now the filename is not understood by the command \maketalk: here is the modified code:

%% begin database-command.tex
\usemodule[database]

\starttext
\startbuffer[pagetalk]
\starttabulate[|f{\bi}l|p|][before=]%
\NC Speaker \EQ 
\goto{{\sc \getvariable{talk}{speakername}}}[fig:\getvariable{talk}{speakername}]
\NC\NR
\NC Title   \EQ \getvariable{talk}{title}    \NC\NR
\stoptabulate
\startplacefigure[number=no]
\externalfigure[\getvariable{talk}{picture}]
\stopplacefigure
\page
\stopbuffer

\setvariable{talk}{set}{\getbuffer[pagetalk]}

\define[3]\maketalk{%
\setvariables[talk]%
[speakername={#1},
title={#2},
picture={#3},
]}

\defineseparatedlist[seplisttalk]
[separator={;},
command=\maketalk]

\startseplisttalk
{Hacker} ; {Up to date hacking} ; {hacker.jpg}
Hacker ; Up to date hacking ; hacker.jpg
\stopseplisttalk

\stoptext
%% end database-command.tex