77 lines
2.5 KiB
PHP
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
|
|
}%>
|