Files
Facilitor/APPL/Shared/data_recordset.inc
Jos Groot Lipman 35b9e44f6d FSN#33507 Kolomnamen kunnen (door pivot) regulier een punt bevatten
svn path=/Website/trunk/; revision=26010
2015-08-20 07:51:48 +00:00

77 lines
2.5 KiB
PHP

<% /*
File:
$Revision$
$Id$
File: shared/data_recordset.inc
Description: Emuleer een ADODB recordset gebaseerd op een JavaScript dataobject
Context: Meestal in combinatie met resultset_table
Notes: De ADODB interface is normaal gesproken case-insensitive qua properties
oRs.eof, oRs.Eof en oRs.EOF werken daar allemaal.
Deze emulator doet dat niet: je moet altijd EOF gebruiken (hoofdletters)
Default properties worden ook niet ondersteund. In plaats van
oRs("veldnaam") moet je oRs.Fields("veldnaam").Value gebruiken
Let verder op dat de veldnaam ook case-sensitive is!
*/
%>
<%
function data_recordset(dataset)
{
this.dataset = dataset;
this.position = -1;
this.Fields = function (columnName)
{
if (typeof columnName == "string")
{
var data = this.dataset[this.position];
if (columnName in data)
return { Value: data[columnName] };
var selarr = columnName.split("."); // we ondersteunen geneste json
for (var i = 0; data && i < selarr.length; i++)
{ // Riskant, soms vullen we 'lazy' de dataset kolommen
//if (!(selarr[i] in data))
// shared.internal_error("Kolom {0} niet gevonden in data recordset".format(columnName));
data = data[selarr[i]];
}
return { Value: data };
}
// else is het number
var cnt = columnName;
for (var nm in this.dataset[this.position])
{
if (cnt == 0)
{
return { Value: this.dataset[this.position][nm],
Name: nm.toUpperCase()};
}
cnt --;
}
shared.internal_error("Kolom {0} niet gevonden in data recordset".format(columnName));
};
this.MoveNext = function ()
{
this.position ++;
this.EOF = this.position+1 > this.dataset.length;
}
this.MoveFirst = function ()
{
this.position = 0;
this.EOF = this.position+1 > this.dataset.length;
this.Fields.Count = 0;
if (!this.EOF)
{
for (var nm in this.dataset[0])
this.Fields.Count++;
}
}
this.close = function () {};
this.MoveFirst(); // Naar eerste record
}%>