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
Base Abfrage in die Calc Tabelle
Moderator: Moderatoren
Re: Base Abfrage in die Calc Tabelle
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.
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.
Re: Base Abfrage in die Calc Tabelle
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
Re: Base Abfrage in die Calc Tabelle
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
Re: Base Abfrage in die Calc Tabelle
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:
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
Re: Base Abfrage in die Calc Tabelle
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
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
Re: Base Abfrage in die Calc Tabelle
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
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