class sysTableValueUpdate extends RunBaseBatch
{
TableId tableId;
Fieldid fieldid;
Fieldid keyId;
tableName tabName;
filename filename;
DialogField fd_Table;
DialogField fd_Key;
DialogField fd_Field;
DialogField fd_File;
#define.CurrentVersion(2)
#LOCALMACRO.ParmList
tableId,fieldid,keyId,filename
#ENDMACRO
}
public void run()
{
#file
Query q;
QueryRun qr;
QueryBuildDataSource qbds;
Common record;
TextIo file = new TextIo(fileName, #IO_read);
container row;
if( !file )
throw error( strfmt( "Błąd otwarcia pliku %1", fileName) );
file.inFieldDelimiter(';');
q = new Query();
qbds = q.addDataSource( tableid );
while( file.status() == IO_Status::Ok )
{
row = file.read();
if( conlen( row ) == 2 )
{
SysQuery::findOrCreateRange(qbds, keyId).value( QueryValue(conpeek(row,1)) );
qr = new QueryRun( q );
while( qr.next( ) )
{
record = qr.get(tableid);
ttsbegin;
record.selectForUpdate(true);
record.(fieldId) = conpeek(row,2);
record.update();
ttscommit;
}
}
}
}
client static void main(Args args)
{
Common record;
sysTableValueUpdate sysTVU;
;
sysTVU = new sysTableValueUpdate();
if( sysTVU.prompt() )
{
sysTVU.run();
}
}
public Object dialog(DialogRunbase _p1, boolean _p2)
{
Dialog ret;
DialogGroup gr1;
;
ret = super(_p1, _p2);
fd_Table = ret.addField( typeId(Tablename) );
//fd_Table.value(tabName);
fd_Key = ret.addField( typeId(FieldName), 'Klucz tabeli' );
fd_Field = ret.addField( typeId(FieldName), 'Pole do aktualizacji' );
fd_File = ret.addField( typeId(FileNameopen) );
fd_File.value(fileName);
return ret;
}
public boolean getFromDialog()
{
SysDictTable dictTable;
;
tableId = tableName2Id( fd_Table.value() );
dictTable = new SysDictTable( tableid );
keyId = dictTable.fieldName2Id( fd_Key.value() );
fieldId = dictTable.fieldName2Id( fd_Field.value() );
fileName = fd_file.value();
return super();
}
public boolean validate(Object calledFrom)
{
SysDictTable dictTable;
boolean ret;
ret = super(calledFrom);
if(ret)
{
dictTable = new SysDictTable( tableName2Id( fd_Table.value() ));
if( dictTable == null )
ret = false;
keyId = dictTable.fieldName2Id( fd_Key.value() );
if(keyId == 0)
ret = false;
fieldId = dictTable.fieldName2Id( fd_Field.value() );
if(fieldId == 0)
ret = false;
}
return ret;
}
boolean unpack(container packedClass)
{
Integer version = conpeek(packedClass,1);
;
switch (version)
{
case #CurrentVersion: [version, #ParmList] = packedClass;
break;
default :
return false;
}
return true;
}
container pack()
{
;
return [#CurrentVersion,#ParmList];
}