suchen und anhängen

Alles zum SQL-Dialekt

Moderator: Moderatoren

Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: suchen und anhängen

Beitrag von Marcus Herz »

Es muss ein Share, Verzeichnis des ADS Server sein. Läuft der auf \\samba42x ? Eher nicht. Vorher dorthin kopieren, du machst ja eh eine...
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

und deshalb wollte ich es so machen, wie eingangs erwähnt. Das hätte keine Probleme mit den ganzen Pfaden gegeben.
dann werde ich es mal versuchen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: suchen und anhängen

Beitrag von nightcrawler »

Du kopierst die DBF doch in den Datenpfad ... dann nimm am besten relativen Pfad zum Dicitonary. Den Namen musst Du angeben, weil die phys Datei 'tabelle1.dbf' im Dicitonary auch als 'buh' angesprochen werden kann - so Du es willst.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

ich habe alles per ARC schonmal getestet und es klappt. Jetzt baue ich es ins fertige Programm.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

nightcrawler hat geschrieben: Fr, 30. Okt 2020 9:33

Code: Alles auswählen

merge tabelle2 t2 using tabelle1 t1
on (t2.id=t1.id)
When not matched then insert values(t1.id, t1.text)
damit wird immer alles von Tabelle1 nach Tabelle2 übertragen, was noch nicht drinsteht
müssen denn Ziel und Start Dateistrukturen übereinstimmen? Kann man nicht nur bestimmte Spalten füllen und den rest nicht beachten?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: suchen und anhängen

Beitrag von HaPe »

--
Hans-Peter
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

die Anleitung habe ich schon gelesen,

Code: Alles auswählen

MERGE tankbuch tb USING tbuch1_kopie tbk
ON (tbk.kfznr=tb.kfznr AND tbk.tankdatum=tb.tankdatum AND tbk.tankzeit=tb.tankzeit)
WHEN NOT MATCHED THEN INSERT VALUES(tbk.art, tbk.kfznr, tbk.kmstand,tbk.menge, tbk.persnr,tbk.tankdatum, tbk.tankzeit, tbk.terminalnr)
ERROR IN SCRIPT: poQuery: Error 7200: AQE Error: State = S0000; NativeError = 2124; [SAP][Advantage SQL Engine]Invalid operand for operator: <assignment> Target Data Type: <Date> Source Data Type: <Numeric> Target Name: BUCHDATUM -- Location of error in the SQL statement is: 199 (line: 3
column: 74)
Ich weiß nur nicht was der Fehler mir sagen will. Die Datentypen sind bei beiden gleich. Außer die reihenfolge paßt nicht. Also es muß alles 1zu1 und ohne Ausnahme übergeben werden. Das erkenne ich aber nicht in der Anleitung. Der Cursur steht dann auf tbk.menge
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: suchen und anhängen

Beitrag von brandelh »

Mann kann sich auch ins Knie bohren :-)

ein einfaches skippen in der DBF mit UPDATE/INSERT Statement scheint mir da doch viel einfacher 8)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

Hi Hubert,
auf wen war das jetzt bezogen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: suchen und anhängen

Beitrag von HaPe »

Wie wärs mit einer Feldliste zwischen dem INSERT und den VALUES?
... then insert (Feld1, Feld2) values(t1.id, t1.text)

Das sollte SQL-Standard sein.
--
Hans-Peter
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

alles schon ausprobiert, dann kommen andere Fehlermeldungen. Ich glaube langsam ich mache das so wie anfänglich geplant. Das erscheint mir doch alles sehr viel problemloser zu gehen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: suchen und anhängen

Beitrag von brandelh »

Manfred hat geschrieben: Fr, 30. Okt 2020 15:58 Hi Hubert,
auf wen war das jetzt bezogen?
na auf die Vorgehensweise eine DBF per einem SQL Befehl mit einer anderen abzugleichen ;-)
Gruß
Hubert
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: suchen und anhängen

Beitrag von nightcrawler »

Manfred hat geschrieben: Fr, 30. Okt 2020 16:11 alles schon ausprobiert, dann kommen andere Fehlermeldungen.
HaPe hat schon recht. Wenn Du uns die Fehlermeldung nennst, dann können wir spezifisch auf das Problem eingehen.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

Joachim,
Du machst mich fertig. Ich habe immer die Meldungen gepostet dazu.....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: suchen und anhängen

Beitrag von nightcrawler »

sorry, zu schnell geantwortet, zu wenig gelesen. Natürlich muss die Reihenfolge übereinstimmen - woher soll denn sonst der ADS wissen, was Du wo einfügen willst? Du kannst schliesslich auch feste Werte, Rückgabe von Funktionen, ganz andere Felder usw als Werte übergeben und musst dann sagen, wohin das soll.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

Nein,
mit Reihenfolge meinte ich nicht die Reihenfolge Felder und Values, sondern Felder wie sie in der Tabelle stehen. Es muß doch nicht jedes Feld angegeben werden, was vorhanden ist, oder?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: suchen und anhängen

Beitrag von HaPe »

Es muß doch nicht jedes Feld angegeben werden, was vorhanden ist, oder?
Nein, aber die Reihenfolge der Feldliste muss zu den Werten/dem Datentyp passen den du in der VALUE-Klausel angibst.
--
Hans-Peter
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

das habe ich beachtet. Zumal mir die meldung auf eine ganz andere Spalte verweist, die überhaupt nicht angefaßt wird. "Buchdatum".
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: suchen und anhängen

Beitrag von HaPe »

Hallo Manfred !

Code: Alles auswählen

MERGE tankbuch tb USING tbuch1_kopie tbk
ON (tbk.kfznr=tb.kfznr AND tbk.tankdatum=tb.tankdatum AND tbk.tankzeit=tb.tankzeit)
WHEN NOT MATCHED THEN INSERT VALUES(tbk.art, tbk.kfznr, tbk.kmstand,tbk.menge, tbk.persnr,tbk.tankdatum, tbk.tankzeit, tbk.terminalnr
Entweder stehe ich auf dem Schlauch oder du. :roll:
Wo ist in deinem obigen Code die Feldliste vor dem VALUES?
--
Hans-Peter
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

Hi HaPe,
weder Du noch ich. Aber ich glaube ich muß mal die Drogen wechseln. Ich weiß nicht was ich da gestern programmiert habe, aber ich habe gerade nochmal alles fein säuberlich eingetippt (auch die Feldliste) und auf einmal klappt es im Architekten. Aber es dauert doch recht lange bis dieser Vorgang 20000 Datensätze gemerged hat. Kann man das irgendwie beschleunigen mit einem weiteren Index in der Zieldatei, oder so?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: suchen und anhängen

Beitrag von Marcus Herz »

Welchen Index gibt es?
kfznr+tankdatun+tankzeit gibts in CDX nicht.
In ADT wäre das:
kfznr;tankdatum;tankzeit

Versuch mal 3 Indices, jeweils auf nur ein Feld
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

Wieso gibt es den in CDX nicht?

im Moment habe ich nur kfznr. Ich war mir am Anfang noch nicht so sicher, was ich alles benötige. Eigentlich benötige ich den auch nur um von da aus eine Relation aus einer anderen Tabelle rein zu machen zu machen.
Aber wenn wir schon beim Thema sind. Eigentlich habe ich das ja anders auf der Wunschliste. Bei meinem Eingangs gewünschtem Vorschlag wollte ich die Sourcedbf rückwärts durchlaufen, weil es immer nur ein paar Sätze sind, die angehängt werden (der große Druchlauf ist nur einmal von Nöten, am Anfang) Das hat bei der do while Schleife den Vorteil, wenn der erste Satz gefunden wird, dann wird abgebrochen. Jetzt hatte ich zu dem MERGE Befehl auch was gefunden, was man machen kann, wenn der andere Zustand eintritt. Bei mir also, wenn der Satz vorhanden ist und nicht angehängt werden muß. In der Do While Schleife höre ich dann einfach auf und springe raus und Ende. Wenn ich das jetzt mit SQl mache, dann fängt das ja immer von vorne an, oder kann man das auch von hinten durchlaufen lassen und wenn dann der erste Satz erreicht wird, der schon vorhanden wird der SQl Befehl beendet? Wie würde generell ein Abbruch eines SQL Befehls ausehen, wenn die Pflicht mittendrin erfüllt ist?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

au man verdammt, was für ein Tempogewinn. Das haut einen glatt aus den Socken. Nachdem ich den Indexschlüssel erweitert habe, verkürzte sich die MERGE ZEit von 15 Minuten oder so, auf wenige Sekunden. Leck mich fett.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: suchen und anhängen

Beitrag von Manfred »

nachdem ich nun den Befehl etwas ergänzt habe

Code: Alles auswählen

IF File(oSysPara:doParaWs:tankbuch_org + "tbuch1.dbf")
            @ nX++,5 Say "Tankbuch vorhanden: " + DToC(Date()) + " " + Time()
            oFahrzeug:kopiere_datei(oSysPara:doParaWs:tankbuch_org + "tbuch1.dbf","e:\tauschverzeichnis\fuhrparkverwaltung\webdienst\tbuch1_kopie.dbf",,.T.)
            TEXT INTO cSQLStmt WRAP Chr(13) TRIMMED
                 EXECUTE PROCEDURE sp_addTableToDatabase('tbuch1_kopie','\tauschverzeichnis\fuhrparkverwaltung\webdienst\tbuch1_kopie',1,2,NULL,NULL)
            ENDTEXT
            oSqlStmt := DC_AdsStatement():new(cSQLStmt,oAdsServer:oSession)
            oSqlStmt:Execute()
            TEXT INTO cSQLSTmt WRAP Chr(13) TRIMMED
                 MERGE tankbuch tb USING tbuch1_kopie tbk
                 ON (tbk.kfznr=tb.kfznr AND tbk.tankdatum=tb.tankdatum AND tbk.tankzeit=tb.tankzeit)
                 WHEN NOT MATCHED THEN INSERT (art, kfznr, kmstand, menge, persnr, tankdatum, tankzeit, terminalnr) VALUES(tbk.art, tbk.kfznr, tbk.kmstand,tbk.menge, tbk.persnr,tbk.tankdatum, tbk.tankzeit, tbk.terminalnr)
            ENDTEXT
            oSqlStmt := DC_AdsStatement():new(cSQLStmt,oAdsServer:oSession)
            oSqlStmt:Execute()
            TEXT INTO cSQLSTmt WRAP Chr(13) TRIMMED
                 DROP TABLE tbuch1_kopie
            ENDTEXT
            oSqlStmt := DC_AdsStatement():new(cSQLStmt,oAdsServer:oSession)
            oSqlStmt:Execute()
         ENDIF
klappt es, wie es aussieht.
ich habe jezt aber nur 1 Problem, Ich kann die Datei tbuch1_dbf nicht löschen. Die ist wohl zu dem Zeitpunkt noch in Benutzung des ADS lt. Architect Remote Server Info. Muß ich noch was tun nach dem Merge?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: suchen und anhängen

Beitrag von Marcus Herz »

Wieso nimmst du nicht dein SELECT, welches du fürs Kopieren nach der TEMP Datei benötigdt, nicht als das SELECT in

Code: Alles auswählen

using( select * from ....) kfztemp
Das sprt dir die Zwischendatei
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Antworten