# Bug Tracker

ID: 164 🔗 Open datatool v2.32 Markus 2020-06-28 12:59:22 Updating currentrow does not work as expected

## Report

I try to create a dynamic project database which is updated in each run of LuaLaTeX and exported to a file. In the next run, the database is loaded from the file.

Starting from scratch (i.e. without any db-file), the database is produced and exported as expected. But in the second run, all updated row entries get modified to the entries of the last row in the database.

The index for currentrow is obtained correctly, but somehow the changes are distributed to the preceeding rows.

I am not sure if this is a bug or if I have missed something within datatool. Thanks!

### MWE

\documentclass[a4paper,10pt]{article}

\usepackage[verbose,separator=;]{datatool}
\usepackage{csquotes}
\usepackage[english]{babel}
\usepackage[top=2cm,bottom=2cm,left=2.5cm,right=2cm]{geometry}
\usepackage{fontspec}

% numbering of projects
\newcounter{project}
\setcounter{project}{0}
\newcommand{\prepro}{P}
\renewcommand{\theproject}{\prepro\arabic{project}}

% create project database
\newcommand{\tabproj}{projects}
{\DTLnewdb{\tabproj}%
\DTLnewrow{\tabproj}
\DTLnewdbentry{\tabproj}{ID}{P0}
}

% updating project database when project ID, title or leaders have changed
\newcommand{\projtitle}{\relax}
\NewDocumentCommand{\updateProjDB}{ m m m }{%
\xdtlgetrowindex{\myrowidx}{\tabproj}{\dtlcolumnindex{\tabproj}{ID}}{#1}
\ifx\myrowidx\dtlnovalue
\DTLnewrow{\tabproj}
{\dtlexpandnewvalue
\DTLnewdbentry{\tabproj}{ID}{#1}
\DTLnewdbentry{\tabproj}{project title}{#2}
}
\else
Changing entry with index: \myrowidx\\
\dtlgetrow{\tabproj}{\myrowidx}%
\dtlreplaceentryincurrentrow{#2}{\dtlcolumnindex{\tabproj}{project title}}
\dtlrecombine
\fi
}

\begin{document}

\DTLdisplaydb{\tabproj}

\refstepcounter{project}\label{author1}
\edef\projcount{\theproject}
\edef\projtitle{Title 1}

\DTLdisplaydb{\tabproj}

\refstepcounter{project}\label{author3}
\edef\projcount{\theproject}
\edef\projtitle{Title 2}

\DTLdisplaydb{\tabproj}

\refstepcounter{project}\label{author5}
\edef\projcount{\theproject}
\edef\projtitle{Title 3}

\DTLdisplaydb{\tabproj}

\DTLsavedb{\tabproj}{projects.csv}

\end{document} 

## Evaluation

It looks like the user manual is incorrect where it claims the value is expanded. It isn’t. Since it could cause a problem for existing documents if I change the behaviour to match the documentation, I think it would be better if I introduce new commands that expand the value.

Since you only need one level of expansion, the following will work:

\expandafter\dtlreplaceentryincurrentrow\expandafter{#2}{\dtlcolumnindex{\tabproj}{project title}}


Comment from Markus. 2020-06-30 19:49 BST

Thanks, works perfectly!

## Watch This Report

If you supply your name, it will be used in the email greeting, which provides a more personal message, otherwise you'll just get a generic greeting. If you have previously supplied your name when signing up for notifications, you don't need to resupply it unless you want to change it.

If you have previously subscribed to notifications for this report, you can unsubscribe by clicking on the "Stop Notification" button.

The "Confirm Bug ID" field helps to protect against spambots. Please enter the bug ID (which you can find at the top of this page).

Name: (Optional.)