Z.B. mit Office am Desktop
und man nutzt Webservices als Datenquelle in Abfragen und Berichten.
Sync oder XML-Transfer sind vielfach nützlich,
aber Direktzugriff per Abfrage/View/Pivot/Chart können aktuelle Daten liefern.
Es gibt Anbieter für ODBC-Treiber und auch Reporttools,
die direkt Webservices nutzen können.
s.a.
--> https://www.google.com/search?q=odbc+http+rest

- 1 - (TxtDoc-webservice2026-07-17.html)
z.B. für Datenquellen,
für die man eine URL hat
und als Tabelle anzeigen möchte.
( Cross-Origin ist hier zu beachten )
KI-Lookups werden auch über diesen Weg genutzt.
z.B. "Tabelle"
--> http://kantn.jobst-software.net:8080/aussendienst4/preferences.html

man kann mit wenig HTML / TypeScript/JavaScript auskommen,
wenn Cross-Origin und Authentifizierung bereits gelöst sind.
<html>
<head>
<title>Einstellungen - Tabelle</title>
<style>
td {
border: solid 1px darkGray; min-width: 2rem; padding: 0.2rem;
}
</style>
<script type="module" >
"use strict";
window.addEventListener( "load", function() {
const select_url = getEinstellungen_Tabelle_Select_url();
fetch( select_url, { credentials: 'include' })
.then( (response) => response.text() )
.then( (text) => {
const table_ele = document.getElementById("d-print-table");
const json_doc = JSON.parse( text);
fill_table( document, table_ele, json_doc);
})
.catch( function( exc) {
alert( "fetch failed (" + exc + ")");
});
});
function fill_table( html_doc, table_ele, json_doc) {
const tag_names = [ "th", "td" ];
for( let tag_name_i=0; tag_name_i < tag_names.length; tag_name_i++ ) {
let tag_name = tag_names[ tag_name_i];
let trs = json_doc;
for( let tr_i=0; tr_i < ( tag_name == "th" && trs.length >= 1 ? 1 : trs.length ); tr_i++ ) {
let tr = trs[ tr_i];
let tr_ele = html_doc.createElement( "tr");
table_ele.appendChild( tr_ele);
let tds = tr;
Object.entries( tds).forEach( ( [fdName, fdValue]) => {
let td_ele = html_doc.createElement( tag_name);
tr_ele.appendChild( td_ele);
td_ele.innerText = ( tag_name == "th" ? fdName : fdValue );
});
}
}
}
function getEinstellungen_Tabelle_Select_url() {
const select = getEinstellungen_Tabelle_Select();
const select_sql = select[ "sql"];
const json_parameters = JSON.stringify( select[ "param"]);
const select_url = "/MywebDb3Servlet" + "?sql=" + encodeURIComponent( select_sql) + "¶meters=" + encodeURIComponent( json_parameters);
return select_url;
}
function getEinstellungen_Tabelle_Select() {
const select_sql = "select _id, PREFERENCE_KEY, PREFERENCE_VALUE from Preferences order by _id";
return { sql: select_sql, param: [] };
}
</script>
</head>
<body>
<h1>Einstellungen - Tabelle</h1>
<table id="d-print-table" >
</table>
</body>
</html>
- 2 - (TxtDoc-webservice2026-07-17.html)
Wenn die XML-Validierung "valid" ergibt
und der Server ein Dokument trotzdem nicht annimmt.
Wie kann das denn sein ?
z.B.
- die Artikelnummer, Kundennummer, ... kennt der Server nicht (mehr)
Für was auf der Client-Seite validieren
und nicht gleich den Server fragen,
ob er ein Dokument annehmen würde ?
Daher ist "well-formed" heute meist "gut genug".

- 3 - (TxtDoc-webservice2026-07-17.html)
z.B. für Datenquellen,
für die man eine URL hat
und als Abfrage oder im Tabellenkalkulationsprogramm nutzen möchte.
Die Arbeit übernimmt hier die SQL
und das Tabellenkalkulationsprogramm braucht nativen Zugriff auf die SQL-Datenbank (z.B. per SDBC auf PostgreSQL).
z.B. "Tabelle"
--> http://kantn.jobst-software.net:8080/aussendienst4/preferences.html

CREATE FUNCTION frepjs2000.ws_preferences() RETURNS TABLE ( PREFERENCE_KEY text, PREFERENCE_VALUE text) SECURITY DEFINER AS $$
BEGIN
create TEMPORARY table temp_tab ( f1 text) on commit drop;
COPY temp_tab
FROM PROGRAM 'curl "http://kantn.jobst-software.net:8080/MywebDb3Servlet?sql=select%20_id%2C%20PREFERENCE_KEY%2C%20PREFERENCE_VALUE%20from%20Preferences%20order%20by%20_id¶meters=%5B%5D" '
;
return QUERY
select
json_array_elements(f1::json)->>'PREFERENCE_KEY' as PREFERENCE_KEY,
json_array_elements(f1::json)->>'PREFERENCE_VALUE' as PREFERENCE_VALUE
from temp_tab
;
END;
$$ LANGUAGE plpgsql;
- 4 - (TxtDoc-webservice2026-07-17.html)
s.a.
----
Einfügen externer Daten in Tabellen (Web-Abfrage)
--> https://help.libreoffice.org/26.2/de/text/scalc/01/04090000.html?System=UNIX&DbPAR=CALC&HID=modules/scalc/ui/externaldata/
z.B.

--> /frepjs2000/Fr_Artikel_Pflege?art_search_text=O-Bestand
- 5 - (TxtDoc-webservice2026-07-17.html)
Es gibt Seiten, die haben alle Daten dabei.
Oder ein Server bzw. Webservice eines Dritten,
stellt die Daten zur Verfügung.
Dann könnte eine HTML-Datei reichen,
um per
- TypeScript/JavaScript HTML CSS
die Daten zu nutzen.

--> http://kantn.jobst-software.net:8080/aussendienst4/stempelkarte4.html
HTML kann einfach sein (<h3>Überschrift</h3> <p>Text</p> <h3>...</h3> <p>...)
und samt
- CSS
- JavaScript
- ohne Zusatzsoftware
anzeig- und druckbar per Browser.
( z.B. kann man mit einer HTML-Datei eine kleine App umsetzen )
HTML funktioniert mit
- HTTP-Servern
- Dateiservern
- SQL (die den Datentyp XML kennt)
- ...
und kann vom jeweiligen Berechtigungssystem profitieren.
HTML kann man auch so gestalten, dass es maschinenlesbar (XML) ist.
- 6 - (TxtDoc-webservice2026-07-17.html)
Man hat viele Daten.
Trotzdem fehlt fast immer Irgendwas.
Entweder,
- man wird ungenauer
- oder holt sich die fehlenden Teile per KI & Co
In der klassischen IT braucht man Ordnungsbegriffe,
wie IBAN, EAN, Kunden-, Artikel-, Kostenstellennummer ...
Diese Genauigkeit ist nicht immer zur Hand,
sind aber meist für eine sinnvolle Automatisierung notwendig.
Klassische Datenbanken tun sich schwer mit diesen Ungenauigkeiten,
darum kann es Sinn machen, mit LLMs Lücken zu schliessen.
Diese werden dynamischer und u.a. durch die Unterstützung von
Dokumentdatentypen der Weg einfacher.
( z.B. die Lesbarkeit von JSON schlägt sich für Mensch und Maschine(Datenbank/Browser) nicht schlecht )

SQL war/ist eine Erleichterung um Daten abzufragen.
Eine Möglichkeit umgangssprachlich formulierte Abfragen abzusetzen,
würde Benutzern noch mehr helfen.
Z.B.:
-----
Selektiere postleitzahlen von im ERP gespeicherten Orten
mit dem Ortsnamen wien
Oder:
-----
Selektiere postleitzahlen von im open-...-data.net angebotenen Orten
mit dem Ortsnamen wien
( z.B. per Linked-Server - Linked/Foreign-Tables auf Webservices )
- 7 - (TxtDoc-webservice2026-07-17.html)