bei Base bekommt man tiefe Falten und graue Haare...

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Indipus
Beiträge: 1
Registriert: Mi, 05.07.2006 11:20

bei Base bekommt man tiefe Falten und graue Haare...

Beitrag von Indipus »

Hallo Experten
ich habe es geschafft, in OO eine "Textdatei-csv format" importiert und als Calc-tabelle gespeichert. eigentlich wollte ich von Base aus eine Tabelle importieren, aber diese Funktion gibt es wohl nicht ? (in Access schon)
Wie zum Geier bekomme ich von Base aus Zugang auf diese Tabelle, die mir als Vorlage zum Daten auslesen dienen soll ?? muß sie besonders formatiert sein ?
Spalte1=K-nummer / Spalte2=Status / Spalte3=Kundendaten(Ort,Str...)
Wenn ich im Baseformular in Textbox1 eine Kontrollnummer eingebe, soll in dieser Vorlage-Tabelle die Kontrollnummer verglichen, gefunden und die zugehörigen Daten wie Name/Ort/Strasse im Formular in einer Textbox (??) oder Listbox (??) angezeigt (ausgelesen) werden um diese mit zusätzlich anderen daten in Base-tabelle zu speichern.
Ohne VBA-Zauber wird dies wohl nicht gehen , oder ??

Desweiteren habe ich ein Währungsfeld im Formular, welches mir aus der
Abfrage "Gesamtsumme von Beträge in Spalte Beträge aus Tabelle1" anzeigt.
Sobald ein neuer Datensatz eingegeben wird ist und bleibt das Feld leer, ich muß immer einen Datensatz zurückschalten und wieder vor um die "Summe" zu aktualisieren. Ist das normal oder fehlt da was ??


Jemand Lösungsansätze ? Danke im voraus !
Allgemein nochwas: Stürzt OO bei Euch auch so gerne ab ??
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: bei Base bekommt man tiefe Falten und graue Haare...

Beitrag von hol.sten »

Indipus hat geschrieben:Allgemein nochwas: Stürzt OO bei Euch auch so gerne ab ??
Mein OOo 2.0.3 stürzt weder unter Windows XP SP2 noch unter Kanotix regelmäßig ab.

Welche OOo Version und welches Betriebssystem nutzt du?

With kind regards
hol.sten
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Indipus,
Allgemein nochwas: Stürzt OO bei Euch auch so gerne ab ??
Nein. Läuft stabil, solange man keine "Fehler" einbaut. Kann allerdings beim Arbeiten mit Base leicht passieren ;-)

Nutz die neueste Version, dann ist es auch am stabilsten.
Allerdings: Eine stabile Version hilft nicht gegen Fehler in SQL-Strings und so weiter...
Jemand Lösungsansätze ?
Jede Menge, und mit Sicherheit ganz ohne VBA-Zauber ;-) Das versteht OOo nämlich nicht.
Aber: Programmieren wirst du wohl müssen - in OOo Basic oder einer anderen Scriptsprache - und das bedeutet, viel Ahnung von der API, Formularen, SQL und so weiter.

Die Schwierigkeit bei Datenbanken ist eben, dass sie sehr komplex sind und man seeeeeehr viel damit machen kann. Nur ist jetzt die Spanne zwischen "einfachen" Anwender (mit "klick, klick") und engaschierten Anwendungsprogrammierer riesig. Was nicht direkt mit dem Assistenten geht, erfordert einfach hier viel Wissen - dann geht alles.

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
ejomi
***
Beiträge: 84
Registriert: Mi, 06.09.2006 15:20

Beitrag von ejomi »

Immer wieder traurig zu lesen, wie manche "Experten" diese Foren nur mit BlaBla füllen aber auf die gestellten Fragen in Wahrheit keine echte Antwort wissen!

Ich empfehle z.B. die "Einführung Datenbankanwendungen" von Jan.Christian Wienandt (http://www.wienandt.de - diese Homepage ist zwar etwas ungepflegt aber man kann interessantes darauf finden!) und natürlich die unzähligen (englischen) Artikel und Beispiel-Makros von Andrew Pitonyak (am besten "googeln") - auf seinen Dokumentationen finden sich ebenfalls unzählige, interessante Links.

Nun zu Deinem Problem:

Voraussetzung ist, daß Du die Daten aus der Original-Quelle als orgendliche CSV-Datei (Feldinhalte in Anführungsstriche, getrennt durch Semikola) zur Verfügung stellen kannst. Dann mußt Du noch klären, ob in der ersten Zeile Spalten-Überschriften oder die Liste direkt mit Daten anfängt.

Von einem der o.a. Autoren habe ich den Trick, wie man csv-Daten per "Direkt-SQL" in eine odb-Datei einkopiert. Das geht nur manuell im Haupt-Menü unter "Extras/SQL/SQL-Statement ausführen"! Man muß in diesem Eingabefenster eine SQL-Komandokette eingeben. Da solche Kommando-Ketten recht lang sind, empfiehlt sich das Zusammenbasteln mittels Notpad und anschließendem Einkopieren in die Eingabe-Maske.

Das unten beispielhaft gezeigte SQL-Kommando gliedert sich in 4 Schritte, muß aber als kompletter Befehlsstring eingesetzt werden.

1. Es wird zunächst eine temporäre Text-Tabelle "tmp_csvimport" mit den notwendigen Feldern (Feldnamen und -Typen müssen dabei grob dem ursprünglichen Formaten entsprechen!)

2. Dann wird als Quelle (hier beispielhaft) die Liste "ExportDaten.csv" definiert und ausserdem durch den Befehl "ignore_first=TRUE" festgelegt, dass die erste Zeile dieser Liste Spalten-Überschriften enthält (bitte prüfen!!). Der Befehl "fs=\semi" teilt dem System mit, daß als Feldtrennzeichen dieser Liste Semikola erwartet werden.

3. Dann wird die eigentliche Ziel-Tabelle "MeineNeueTabelle" mit den endgülitigen Feld-Definitionen neu erzeugt. Diese Tabelle muß mindestens die gleiche Anzahl und in jedem Fall die jeweils gleichen Feld-Typen besitzen, wie bereits in der temporären Import-Tabelle vorgegeben! Außerdem wird mit PRIMARY KEY ("ID") festgelegt, dass das Feld "ID" zukünftig den Primärschlüssel erthält.

4. Jetzt passiert der eigentliche Kopier-Vorgang in "MeineNeueTabelle". Und auch hier wieder: alle Felder müssen zueinander passen! Natürlich kann "MeineNeueTabelle" völlig andere Feld-Namen enthalten: falls z.B. mein ehemaliger "branche" zukünftig "BranchenCode" heißen soll, so müsste die SQL-Anweisung so lauten:

CREATE TABLE "MeineNeueTabelle"
...
"BranchenCode" INTEGER
...

INSERT INTO "MeineNeueTabelle"
...
"BranchenCode" INTEGER
...
FROM
...
"branche" INTEGER
...
"tmp_csvimport"


5. Als letztes wird mit COMMIT; alle SQL-Befehle zur Ausführung gebracht und mit DROP TABLE "tmp_csvimport" die temporäre Tabelle wieder gelöscht.


Hier folgt die komplette SQL-Befehlskette:

CREATE TEXT TABLE "tmp_csvimport" (
"ID" INTEGER,
"name1" VARCHAR (100),
"strasse" VARCHAR (100),
"plz" VARCHAR (10),
"ort" VARCHAR (50),
"email" VARCHAR (100),
"branche" INTEGER,
"telvorwahl" VARCHAR (100),
"telnummer" VARCHAR (100))

SET TABLE "tmp_csvimport"
SOURCE "ExportDaten.csv; ignore_first=TRUE; fs=\semi";

CREATE TABLE "MeineNeueTabelle" (
"ID" INTEGER NOT NULL,
"name1" VARCHAR (100),
"strasse" VARCHAR (100),
"plz" VARCHAR (10),
"ort" VARCHAR (50),
"email" VARCHAR (100),
"branche" INTEGER,
"telvorwahl" VARCHAR (100),
"telnummer" VARCHAR (100),
PRIMARY KEY ("ID"))

INSERT INTO "MeineNeueTabelle" (
"ID",
"name1",
"strasse",
"plz",
"ort",
"email",
"branche",
"telvorwahl",
"telnummer")
SELECT
"ID",
"name1",
"strasse",
"plz",
"ort",
"email",
"branche",
"telvorwahl",
"telnummer"
FROM
"tmp_csvimport";

COMMIT;

DROP TABLE "tmp_csvimport"
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Beitrag von pmoegenb »

Hallo ejomi,

vermutlich hat Indipus nahezu 2 Monate auf Deine Antwort gewartet.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
ejomi
***
Beiträge: 84
Registriert: Mi, 06.09.2006 15:20

Beitrag von ejomi »

... schlimm genug (wenns denn so wäre)! Aber was solls: ich habe in manchen Foren schon viel länger gewartet bzw. überhaupt keine Antwort bekommen. Such is live!
Antworten