Base Abfrage in die Calc Tabelle

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

nusta88
***
Beiträge: 78
Registriert: Di, 26.06.2007 13:30

Base Abfrage in die Calc Tabelle

Beitrag von nusta88 »

Hallo Leute,

ich versuche grad eine Base-Abfrage in dei Calc Tabelle zu importieren. Mein Chef hat mir gesagt mit einem Klick auf eine Schaltfläche soll es automatisch die Abfrage machen und dann dies in Calc transportieren. Er meint dies würde mit Makro gehen. Allerdings sehe ich da keine Möglichkeit. Jedoch wenn ihr Lösungsvorschläge hättet, bin ich gern bereit die entgegenzunehmen.

Doch wie ich es machen will, ist eigentlch relativ einfach. Ich will vorerst die Abfrage speichern. In dieser Abfrage sind aber auch Parameterwerte drin. Aber wenn ich die Abfrage mit den Parameterwerten durchführe, komm zwar eine Ansicht von der Abfrage, aber ich kann diese weder speichern noch in Calc transportieren.

Ich bin auf euere Hilfe angewiesen. Bitte hilft mir.

bis dann
Steffan
****
Beiträge: 125
Registriert: Mi, 21.06.2006 10:07
Wohnort: Dresden

Re: Base Abfrage in die Calc Tabelle

Beitrag von Steffan »

Hallo,

aus Base direkt geht das nicht, aber innerhalb eines Formulars kannst Du das per Makro lösen.
Folgendes sollte das Makro machen:
- Verbindung zur DB
- Abfrage(n) einlesen, auswählen
- Abfrage-Command zerlegen
- Parameter auslesen, über Dialog abfragen
- Spaltennamen ermitteln
- neues SQL-Kommando generieren
- Abfrage durchführen
- Calc-Dokument öffnen
- Resultsset der Abfrage zeilenweise in Calc-Dokument eintragen

Die Lösung ist doch ein gewisser Programmieraufwand, lässt sich aber m.E. realisieren.

Steffan.
nusta88
***
Beiträge: 78
Registriert: Di, 26.06.2007 13:30

Re: Base Abfrage in die Calc Tabelle

Beitrag von nusta88 »

ja danke Steffan, aber was ich noch nicht hinbekommen habe ist, dass nur die erste zeile der spalten kopiert wird. weißt du den code dafür wie man die zeilen vorspult. ich hab was mit absolute(nZE) gelesen aber einsetzen konnte ich es iwie nicht. danke auf schnelle antworten
Steffan
****
Beiträge: 125
Registriert: Mi, 21.06.2006 10:07
Wohnort: Dresden

Re: Base Abfrage in die Calc Tabelle

Beitrag von Steffan »

Beispiel aus einem Makro von mir:

Code: Alles auswählen

		if oConn is nothing then call makeConnection
		oStat=oConn.createStatement()
		sQuery = "SELECT project_address_type FROM project_address_types WHERE  ( typeID = " & cstr(iType) & " )"
		oResult=oStat.executeQuery(sQuery)
		dim sTypes() as string	
		While oResult.Next
			sType=oResult.getString(1)	
		wend
nusta88
***
Beiträge: 78
Registriert: Di, 26.06.2007 13:30

Re: Base Abfrage in die Calc Tabelle

Beitrag von nusta88 »

ok nochma danke

soweit so gut

ich hab jetzt bei mir ein Problem, dass ich das Anhand einer Parameterabfrage machen will. Alerrdings wirft er mir ne Fehlermeldung, wenn ich das Anhand einer Parameterabfrage mache, was könnte das Problem sein?

Hier der Code:

Code: Alles auswählen

	sQuery = "SELECT ""Anrede"", ""Nachname"", ""Nachname"", ""Geburtstag"" FROM ""Adressen"" AS ""Adressen"" WHERE ( ( ""Geburtstag"" > {D 'Datum' } ) )" 'Datum frage ich mit einer Inputbox ab. Aber es wirft eine Fehlermeldung hervor
Steffan
****
Beiträge: 125
Registriert: Mi, 21.06.2006 10:07
Wohnort: Dresden

Re: Base Abfrage in die Calc Tabelle

Beitrag von Steffan »

Fehlermeldung?

Liegt wahrscheinlich an der Parameterübergabe oder am Datumsformat, lässt sich ohne weitere Angaben schwer sagen.
Auf alle Fälle musst Du Deinen SQL-String einzeln zusammensetzen. Ich gehe mal davon aus, dass dein Feld "Geburtstag" als Datum formatiert ist, dann musst Du dafür Sorge tragen, dass auch ein entsprechend formatierter String übergeben wird. Ich verwende eine MySQL-DB und da muss ein Datum immer im Format 'YYYY-MM-DD' (in einfachen Hochkommata) übergeben werden, wie das in anderen DB-Systemen ist weiß ich im Moment nicht. Zur Umwandlung verwende ich dazu die kleine unten gelistete Funktion toDate(). Vorher musst Du allerdings sicherstellen, dass dein User wirklich eine Datum eingibt, ansonsten gibst schon in der ersten Zeile einen Fehler.

Steffan

Code: Alles auswählen

...
sDatum = toDate(cDate(Inputbox("Geburtsdatum eingeben")))
sQuery = "SELECT ""Anrede"", ""Nachname"", ""Nachname"", ""Geburtstag"" FROM" & _
 ""Adressen"" AS ""Adressen"" WHERE ( ""Geburtstag"" > '" & sDatum & "' )"
...


function toDate(dDate as Date) as string
'wandelt ein Datum in einen SQL-lesbaren String um
	sYear = cStr(year(dDate))
	sMonth = Format(month(dDate),"00")
	sDay = Format(day(dDate),"00")
	toDate = sYear & "-" & sMonth & "-" & sDay
end function
nusta88
***
Beiträge: 78
Registriert: Di, 26.06.2007 13:30

Re: Base Abfrage in die Calc Tabelle

Beitrag von nusta88 »

boah es funzt alles

danke Steffan für alles, dank dir hab ich so viel Zeit eingespart. Ich bin dir echt dankbar, ich hoffe in Kürze geht dein Traum in Erfüllungg
Antworten