SQL INSERT

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

vampir666
**
Beiträge: 32
Registriert: Mi, 17.02.2010 15:37

Re: SQL INSERT

Beitrag von vampir666 »

HALLO
Mittlerweile habe ich den INSERT hinbekoemn.Die Tabbele war corrupt.
Nun kan cih imemr ncoh nicht das Datum ändern.Wenn ich versuche die Funktion DATEADD() zu benutzen kommt
ACCES Denied kann mir jemand helfen?
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: SQL INSERT

Beitrag von pmoegenb »

So lange Du keine Parameter mitgibst wird dies auch so bleiben. Hier findest Du Beispiele http://www.eulanda.de/inside/entwickler ... ateadd.htm.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
vampir666
**
Beiträge: 32
Registriert: Mi, 17.02.2010 15:37

Re: SQL INSERT

Beitrag von vampir666 »

Ich ahbe aber Parameter mitgegeben :
Code:

UPDATE "Tabelle" SET "xyz" = DATEADD(yy,1,xyz)
DANKE
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: SQL INSERT

Beitrag von eBayer »

Wenn Dein Datumsfeld vom Typ Date ist, wäre das Format zum speichern "2010-02-18" in Gänsefüsschen.
DateAdd liefert aber 2011-02-18 12:56:41.610 zurück. Ich bin mir nicht sicher ob das so funktioniert!
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
vampir666
**
Beiträge: 32
Registriert: Mi, 17.02.2010 15:37

Re: SQL INSERT

Beitrag von vampir666 »

Ich könnte auhc in Timestamp umwandeln hätte 2008-01.01 00:00:00 oder so kein Problem.

Hätte Jemand sonst eine Idee wie ich eni Datum ändern könnte

Danke :)
vampir666
**
Beiträge: 32
Registriert: Mi, 17.02.2010 15:37

Re: SQL INSERT

Beitrag von vampir666 »

Kommt schon Leute kann mir keiner helfen?
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: SQL INSERT

Beitrag von eBayer »

Hallo Vampir,
wofür hast Du Deine spitzen Zähne..... beiß Dich durch. :lol:
Unter Basic-Hilfe findest Du alles was Du zur Konvertierung des Datums brauchst.....
Dateadd ist übrigens keine SQL-Funktion, kann also von einem SQL-Statement nicht aufgelöst werden.
Trotzdem, versuch es mal mit der folgenden Funktion.
Du übergibst der Funktion Dein mit Dateadd errechnetes Datum und bekommst ein SQL-kompatibles Datum als String zurück.
Dann baust Du die Connection zur DB auf und baust dann Dein SQL-Statement zusammen - etwa wie folgt:
dDatum = Dateadd.............
sDatum = convSqlDate(dDatum)
sSQL = "UPDATE "DeineTabelle" SET ""DeinDatum"" = '" + sDatum + "'" ' achte auf das einfache Hochkomma!!!
oStatement.executeUpdate(sSQL)

Gruß eBayer

Function convSqlDate(dDatum) As String ' Datum in das gültige Format für SQL konvertieren
convSqlDate = left(dDatum,4) + "-" + mid(dDatum,5,2) + "-" + mid(dDatum,7,2)
End Function
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
vampir666
**
Beiträge: 32
Registriert: Mi, 17.02.2010 15:37

Re: SQL INSERT

Beitrag von vampir666 »

HAllo

Um ehrlcih zu sien habe ich keinerlein BASIC-Kenntnisse.Ich würde das eher lieber über Extras->SQL machen.Den Obengennanten INSERT mqche ich auch über Extras.

Hat einer eine Idee wie ich über einfaches SQL das machen kann?
DANKE
vampir666
**
Beiträge: 32
Registriert: Mi, 17.02.2010 15:37

Re: SQL INSERT

Beitrag von vampir666 »

Hier ist Mein Code
INSERT INTO "Trbd"(select NULL,( "F-Mon"+'365'),"Adr-#","Produkt","Hersteller","Re#","Lizenznehmer","Vorgang",
"Kapazität","RKZ","SKZ","V#","Von","Bis","V-Beginn","VAT-ID","Währung","Netto","Mwst","Brutto","Kurs"
FROM "Trbd"
WHERE "SKZ" ='D' AND "F-Mon" BETWEEN
'2008-01-01' AND '2010-10-01')

Meine Idee mit der Select (x+'365')klapt nur wenn ich versuche es ebi einem zahlenfeld zu machen.
Weder bei Date(passiert ncihts) ncoh bei TIMESTAMP komt ein Fehler value too long funktionierts.
Bitte helft mir mal.
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: SQL INSERT

Beitrag von eBayer »

Hallo Vampir,
schau einfach mal hier nach. Wenn Du dann nicht weiterkommst, schau die Doku von HSQLDB an.
http://user.services.openoffice.org/en/ ... 96&start=0

http://www.hsqldb.org/doc/guide/guide.html

Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
vampir666
**
Beiträge: 32
Registriert: Mi, 17.02.2010 15:37

Re: SQL INSERT

Beitrag von vampir666 »

Hallo
ich ahbe alle diese Libnks bereits geshen.Es hilft mir kein bsihcen weiter.
Mein Problem ist immer noch dies dass ich nur mit SQL-Statements ohen Basic,Pythoon oder sonst was dass ichi zum Datumfeld keine Tage,Jahre oder Monate addieren kann.

Bitte immernoch um Hilfe
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: SQL INSERT

Beitrag von eBayer »

Du wirst nicht um ein Makro herumkommen, denn HSQLDB verfügt nur über eingeschränkte Datumsfunktionen.
Wenn Du MySQL einsetzt...... Dort gibt es die Funktion adddate.
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: SQL INSERT

Beitrag von Barlee »

Hallo vampir666,

die Mittel in der HSQLDB sind, was Dein Problem angeht, mehr als bescheiden. Entweder greifst Du auf richtige Datenbanken zurück (eBayer hat ja schon z.B. MySQL erwähnt) oder Du bist bereit für eine große Rumpfriemelei.

Trotz allem gehts auch hier. Ist zwar recht umständlich, führt aber zum Ergebnis. Folgender Code wandelt ein Datum in das Datum des nächsten Jahres um. Der 29. Februar wird auf den 1. März des darauffolgenden Jahres gelegt.
Baue das einfach in Deine Abfrage ein: ("Datum" steht für die Datumsspalte - SQL direkt ausführen!)

Code: Alles auswählen

...
CAST(CAST(YEAR("Datum") AS INT)+1||'-'||TO_CHAR(
CASE WHEN TO_CHAR("Datum",'MM') = '02' AND CAST(TO_CHAR("Datum",'DD') AS INT) >28 
THEN CAST(TO_CHAR("Datum",'YYYY')||'-'||'03'||'-'||'01' AS DATE)
ELSE "Datum" END
,'MM')||'-'||TO_CHAR(
CASE WHEN TO_CHAR("Datum",'MM') = '02' AND CAST(TO_CHAR("Datum",'DD') AS INT) >28 
THEN CAST(TO_CHAR("Datum",'YYYY')||'-'||'03'||'-'||'01' AS DATE)
ELSE "Datum" END
,'DD') AS DATE) AS "Jahr+1"
...

Am besten Du lässt diesen Code mal auf eine Probetabelle mit Datumsspalte los.
Gruß Barlee
vampir666
**
Beiträge: 32
Registriert: Mi, 17.02.2010 15:37

Re: SQL INSERT

Beitrag von vampir666 »

Vielen Dank für die vielen antworten
ich habe angefangen mich mit basic auseinander zu setzen.

Dank dem Ebayer habe ich folgenden code erstellt.

Sub Main

Dim sPassword,sPDSName,sUser,sErrorMsg, sOutput_File_Name,sView_Name, sDrop_CSV_SQL,dDatum, sDatum as String

Dim oStatement, oDBSource, oConnection As Object

sPDSName ="Fakturierung"

sTable_Name ="Trbd"

dDatum = Dateadd(yy,1,F-Mon)
sDatum = convSqlDate(dDatum)
sSQL = "UPDATE "Trbd" SET ""F-Mon"" = '" + sDatum + "'"
oStatement.executeUpdate(sSQL)


MsgBox "Erstellt"

End Sub

wenn ich den ausführe bleibt das Macro hängen.

was kann ich tun?
Danke
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: SQL INSERT

Beitrag von eBayer »

Hallo Vampir,
ich werde Dir heute Spätnachmittag eine Korrektur Deines Makros schicken... habe jetzt keine Zeit mehr.
Aber soviel vorab....
1. wenn Du auf ein Datenfeld (z.B. F-Mon) zugreifen willst, mußt Du natürlich vorher die Tabelle mit dem passenden Datensatz gelesen haben.
So wie Du auf F-Mon zugreifst, ist das nicht möglich, da Du keinen Zugriff auf die Tabelle programmiert hast.
2. Hast Du die Funktion ConvSqlDate eingebaut? In Deinem Codefragment sehe ich nichts davon.
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Antworten