bedingter (temporärer) Index
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
bedingter (temporärer) Index
Hi,
ich grübel gerade darüber, wie man folgendes Problem einfach lösen könnte. (Ohne Array, daran habe ich schon gedacht.)
Ich habe eine "kleine" DB, die Verknüpfungen zu einer großen DB hält. Es könnten 30-100 Sätze sein, die auf eine DB zugreifen in der knapp 1 Mio Sätze stehen. Leider stehen in der großen Db die Felder, über die sortiert werden sollte.
Hat jemand evtl. eine Idee, wie man die Indexfelder aus der großen Db herausbekommt, ohne viel hin und her zu kopieren?
Sicherlich könnte man die kleine DB durchskippen und dann das Ergebnis aus der kleinen und der großen in eine weitere DB kopiere, die entsprechend indiziert ist, aber gibt es nicht irgend eine andere Lösung, die vielleicht nur mit einem Index arbeitet? so dass ich praktisch nur die gefundenen Sätze in einen temporären Index packe und dann dem User vorgaukel, es gibt nicht mehr Sätze, der Index aber nur die Treffer aus der großen DB anzeigt und gleichzeitig die Sätze, die dazu passen aus der kleinen DB?
Das Ergebnis soll in einem Browse angezeigt und durchsucht werden können.
So, Wurm gebildet, auf zur Diskussion. =D>
Ach so, bevor ich das vergesse, ich arbeite mit CDX.
ich grübel gerade darüber, wie man folgendes Problem einfach lösen könnte. (Ohne Array, daran habe ich schon gedacht.)
Ich habe eine "kleine" DB, die Verknüpfungen zu einer großen DB hält. Es könnten 30-100 Sätze sein, die auf eine DB zugreifen in der knapp 1 Mio Sätze stehen. Leider stehen in der großen Db die Felder, über die sortiert werden sollte.
Hat jemand evtl. eine Idee, wie man die Indexfelder aus der großen Db herausbekommt, ohne viel hin und her zu kopieren?
Sicherlich könnte man die kleine DB durchskippen und dann das Ergebnis aus der kleinen und der großen in eine weitere DB kopiere, die entsprechend indiziert ist, aber gibt es nicht irgend eine andere Lösung, die vielleicht nur mit einem Index arbeitet? so dass ich praktisch nur die gefundenen Sätze in einen temporären Index packe und dann dem User vorgaukel, es gibt nicht mehr Sätze, der Index aber nur die Treffer aus der großen DB anzeigt und gleichzeitig die Sätze, die dazu passen aus der kleinen DB?
Das Ergebnis soll in einem Browse angezeigt und durchsucht werden können.
So, Wurm gebildet, auf zur Diskussion. =D>
Ach so, bevor ich das vergesse, ich arbeite mit CDX.
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!!
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!!
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: bedingter (temporärer) Index
hi,
wenn ja muss es ja wie du sagt ein "Feld" geben über die die RELATION läuft, also kann man
doch auch das "Feld" indizieren.
RELATION besteht oder den "Feld"namen ?
evtl. wären paar Zeile Code ganz gut um zu sehen was du meinst.
also du willst eine "Teilmenge" haben ? die "kleine" DBF ist in RELATION (?) zur grossen ?Manfred hat geschrieben: Ich habe eine "kleine" DB, die Verknüpfungen zu einer großen DB hält. Es könnten 30-100 Sätze sein, die auf eine DB zugreifen in der knapp 1 Mio Sätze stehen. Leider stehen in der großen Db die Felder, über die sortiert werden sollte.
wenn ja muss es ja wie du sagt ein "Feld" geben über die die RELATION läuft, also kann man
doch auch das "Feld" indizieren.
das "verstehe" ich nicht, was willst du "herausbekommt" ? Den Inhalt der "Feld"es zu dem eineManfred hat geschrieben: Hat jemand evtl. eine Idee, wie man die Indexfelder aus der großen Db herausbekommt, ohne viel hin und her zu kopieren?
RELATION besteht oder den "Feld"namen ?
evtl. wären paar Zeile Code ganz gut um zu sehen was du meinst.
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: bedingter (temporärer) Index
Hi Jimmy,
ich habe noch gar keinen Code. Ich bin gerade erst dabei mir eine Lösung auszudenken.
Normalerweise ist es so, dass ich die/eine DB im Browse habe. Dann kann man rauf und runterscrollen und suchen und alle sind glücklich. In dem obigen Fall ist es aber so, dass ich in der kleinen DB nur die spezifischen Daten habe und mir aus der großen DB den Namen dazu hole, weil der nur 1x vertreten ist. Ich könnte natürlich jetzt die kleine DB browsen und dann über eine Relation mir auch die Namen aus der großen DB holen. Dann sind sie aber unsortiert. Ich würde aber gerne das Ergebnis sehen, das aber nach Namen sortiert. Also die "kleine DB" steuert über Relationen die "große DB".
Also zu vergleichen mit einer Rechnungs, oder Auftragsdatei. Viele Einzelposten, aber nur 1 Kunde. Man zeigt die einzelnen Posten an, kann aber nach Kundennamen sortiert scrollen.
ich habe noch gar keinen Code. Ich bin gerade erst dabei mir eine Lösung auszudenken.
Normalerweise ist es so, dass ich die/eine DB im Browse habe. Dann kann man rauf und runterscrollen und suchen und alle sind glücklich. In dem obigen Fall ist es aber so, dass ich in der kleinen DB nur die spezifischen Daten habe und mir aus der großen DB den Namen dazu hole, weil der nur 1x vertreten ist. Ich könnte natürlich jetzt die kleine DB browsen und dann über eine Relation mir auch die Namen aus der großen DB holen. Dann sind sie aber unsortiert. Ich würde aber gerne das Ergebnis sehen, das aber nach Namen sortiert. Also die "kleine DB" steuert über Relationen die "große DB".
Also zu vergleichen mit einer Rechnungs, oder Auftragsdatei. Viele Einzelposten, aber nur 1 Kunde. Man zeigt die einzelnen Posten an, kann aber nach Kundennamen sortiert scrollen.
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!!
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!!
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: bedingter (temporärer) Index
hi,
"Master" werden und die Rechnung/Einzelpositionen sind die Childs. Der "Master" bekommt dann
die "Bedingung" z.b. SCOPE KDNR sodas du nur noch Child mit der Bedingung bekommst.
Der "Trick" besteht wohl darin das wenn du "alle" Einzelpositionen sehen willst den "Master"
abschalten musst (SCOPE/Relation auflösen)
Die Einzelpositionen, was haben die für Indexe ? Die Einzelpositionen hat ja vermutlich auch
eine Artikel Nummer, also wie wäre ARTNR+KDNR als Index ?
und dann wäre da noch die Frage wie du das auf dem Bildschirm darstellen möchtest, 2x Browse ?
achso, also under Construction ...Manfred hat geschrieben: ich habe noch gar keinen Code. Ich bin gerade erst dabei mir eine Lösung auszudenken.
ich denke du musst es andersrum sehen. Wenn du die Kunden sortiert haben willst musst das derManfred hat geschrieben: Also zu vergleichen mit einer Rechnungs, oder Auftragsdatei. Viele Einzelposten, aber nur 1 Kunde. Man zeigt die einzelnen Posten an, kann aber nach Kundennamen sortiert scrollen.
"Master" werden und die Rechnung/Einzelpositionen sind die Childs. Der "Master" bekommt dann
die "Bedingung" z.b. SCOPE KDNR sodas du nur noch Child mit der Bedingung bekommst.
Der "Trick" besteht wohl darin das wenn du "alle" Einzelpositionen sehen willst den "Master"
abschalten musst (SCOPE/Relation auflösen)
Die Einzelpositionen, was haben die für Indexe ? Die Einzelpositionen hat ja vermutlich auch
eine Artikel Nummer, also wie wäre ARTNR+KDNR als Index ?
und dann wäre da noch die Frage wie du das auf dem Bildschirm darstellen möchtest, 2x Browse ?
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: bedingter (temporärer) Index
Moin,
ich merke schon, das scheint wieder kompliziert zu werden. Ich würde ganz gerne nur 1 Browse aufmachen, in dem halt die entsprechenden Felder sind. Ich muß nochmal nachdenken, ob ich nicht doch die Sache anders angehen muß/werde.
ich merke schon, das scheint wieder kompliziert zu werden. Ich würde ganz gerne nur 1 Browse aufmachen, in dem halt die entsprechenden Felder sind. Ich muß nochmal nachdenken, ob ich nicht doch die Sache anders angehen muß/werde.
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!!
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!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: bedingter (temporärer) Index
Moin,
in dem einen Browse kannst Du doch Felder aus verschiedenen Datenbanken anzeigen! Oder nicht?
Viele Grüße,
Martin
in dem einen Browse kannst Du doch Felder aus verschiedenen Datenbanken anzeigen! Oder nicht?
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: bedingter (temporärer) Index
Manfred,
da würde ich eine Code-Block mit Scope machen. Da Du ja Express++ User bist, dort gibt es auch Beispiele.
da würde ich eine Code-Block mit Scope machen. Da Du ja Express++ User bist, dort gibt es auch Beispiele.
Code: Alles auswählen
dbselectarea( "rk" )
("rk")->(OrdSetFocus(2))
("rk")->(dbseek( str( m_kdnr, 9 ),.t.))
if ("rk")->(found()) .and. !("rk")->(eof())
bKopf := {|| ("rk")->(DbSetScope( SCOPE_TOP, str( m_kdnr, 9 ) ) ), ;
("rk")->(DbSetScope( SCOPE_BOTTOM, str( m_kdnr, 9 ) ) ), ;
("rk")->(dbGoTop()) }
Eval(bKopf)
@ lastrow, centpos DCTOOLBAR oToolBar SIZE lastcol-2, 1.0
DCSETPARENT oToolBar
DCADDBUTTON CAPTION BMP_FILE_OK SIZE 12, 1.0 ;
ACCELKEY { xbeK_F12, xbeK_ALT_O } TOOLTIP mess207 ;
ACTION { || DC_ReadGuiEvent( DCGUI_EXIT_OK, GetList ) }
DCADDBUTTON CAPTION BMP_ABBRUCH SIZE 12, 1.0 ;
ACCELKEY xbeK_ALT_X TOOLTIP mess208 ;
ACTION { || DC_ReadGuiEvent( DCGUI_EXIT_ABORT, GetList ) }
DCSETPARENT TO
@ 0.5, 0 DCSAY ("kd")->bezeich SAYFONT "10.Verdana Bold" SAYSIZE 0
@ 1.5, 0 DCSAY rtrim( ("kd")->l_str )+" "+ strzero(("kd")->l_plz) + rtrim( ("kd")->l_ort );
SAYFONT "10.Verdana Bold" SAYSIZE 0
bPosit := {|| ("rp")->(DbClearScope()), ;
("rp")->(DbSetScope( SCOPE_TOP, str( ("rk")->renr, 9 ) ) ), ;
("rp")->(DbSetScope( SCOPE_BOTTOM, str( ("rk")->renr, 9 ) ) ), ;
("rp")->(dbGoTop()), ;
oBrowRp:refreshAll() }
@ 3, 0 DCBROWSE oBrowse ALIAS cAlias SIZE lastcol-70, lastrow-3 ;
MKCOLOR { || !dummy() }, { || sayrfarbe() } ;
NOSOFTTRACK SCOPE DESCENDING ;
ITEMMARKED {|| Eval(bPosit), ;
DC_GetRefresh(GetList,, ;
DCGETREFRESH_TYPE_EXCLUDE,{GETLIST_BROWSE}) } ;
EVAL {|| oBrowse:goTop() }
DCSETPARENT oBrowse
DCBROWSECOL DATA { || x_reart() } HEADER mess209 WIDTH 6 PICTURE "XXXXXXXX"
DCBROWSECOL field ("rk")->renr HEADER mess210 WIDTH 6 PICTURE "999999999"
DCBROWSECOL field ("rk")->rdat HEADER mess211 WIDTH 6
DCBROWSECOL field ("rk")->gnet HEADER mess212 WIDTH 6 PICTURE "@E 99,999.99"
DCBROWSECOL field ("rk")->mwdm HEADER mess213 WIDTH 6 PICTURE "@E 99,999.99"
DCBROWSECOL field ("rk")->gbru HEADER mess214 WIDTH 6 PICTURE "@E 99,999.99"
DCBROWSECOL DATA { || if( ("rk")->druk, JA, NEIN ) } HEADER mess215 ;
WIDTH 4 PICTURE "XXXX"
DCBROWSECOL DATA { || if( ("rk")->fibu, JA, NEIN ) } HEADER mess216 ;
WIDTH 4 PICTURE "XXXX"
DCBROWSECOL FIELD ("rk")->txt WIDTH 12;
HEADER "Komm" DATATOOLTIP {|| lDataToolTips }
DCSETPARENT TO
@ 3, nFpos DCBROWSE oBrowRp ALIAS 'rp' SIZE lastcol-(nFpos+1),lastrow-3 ;
PRESENTATION DC_BrowPres() ;
NOSOFTTRACK SCOPE
DCSETPARENT oBrowRp
DCBROWSECOL field ("rp")->pos HEADER mess217 WIDTH 4 picture "9999"
DCBROWSECOL field ("rp")->artnr HEADER mess218 picture "!!!!!!!!!!!!"
DCBROWSECOL field ("rp")->bez1 HEADER mess219 ;
picture "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
DCBROWSECOL field ("rp")->lmenge HEADER mess221 WIDTH 4 picture "99999"
DCBROWSECOL field ("rp")->epreis HEADER mess222 WIDTH 5 picture "@E 9999.99"
DCBROWSECOL field ("rp")->rabatt HEADER mess223 WIDTH 4 picture "@E 99.99"
DCBROWSECOL field ("rp")->bez2 HEADER mess220 ;
picture "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
DCHOTKEY xbeK_F1 ACTION { || my_help( dc_getactiveinfo( GetList ) ) } // F1
DCGETOPTIONS BUTTONALIGN DCGUI_BUTTONALIGN_CENTER ;
COLORGETS {{GRA_CLR_BLACK,GRA_CLR_YELLOW}} ;
TABSTOP ;
ROWOFFSET ("fi")->zeiloff ;
WINDOWWIDTH nMaxCol ;
WINDOWHEIGHT nMaxRow ;
WINDOWROW aPos[2]+22 ;
WINDOWCOL aPos[1]+5
DCREAD GUI OPTIONS GetOptions MODAL SETAPPWINDOW TITLE cTitle to lOk ;
EVAL {|o| SetAppFocus(oBrowse:GetColumn(1))}
("rk")->(DbClearScope())
("rp")->(DbClearScope())
Gruß
Klaus
Klaus
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: bedingter (temporärer) Index
Hi,
ich könnte mir vorstellen, das das ein kleines Thema am Rande sein könnte für Samstag. Kommst Du auch, Klaus?
ich könnte mir vorstellen, das das ein kleines Thema am Rande sein könnte für Samstag. Kommst Du auch, Klaus?
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!!
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!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: bedingter (temporärer) Index
Aber nur klein und nur am Rande
Viele Grüße,
Martin
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: bedingter (temporärer) Index
Oops,
Martin Du lebst ja noch....
Martin Du lebst ja noch....
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!!
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!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: bedingter (temporärer) Index
Klar - aber ich bin trotzdem nicht der Holzmichel
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.