bedingter (temporärer) Index

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
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

Beitrag von Manfred »

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.
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
AUGE_OHR
Marvin
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

Beitrag von AUGE_OHR »

hi,
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.
also du willst eine "Teilmenge" haben ? die "kleine" DBF ist in RELATION (?) zur grossen ?
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.
Manfred hat geschrieben: Hat jemand evtl. eine Idee, wie man die Indexfelder aus der großen Db herausbekommt, ohne viel hin und her zu kopieren?
das "verstehe" ich nicht, was willst du "herausbekommt" ? Den Inhalt der "Feld"es zu dem eine
RELATION besteht oder den "Feld"namen ?

evtl. wären paar Zeile Code ganz gut um zu sehen was du meinst.
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
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

Beitrag von Manfred »

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.
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
AUGE_OHR
Marvin
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

Beitrag von AUGE_OHR »

hi,
Manfred hat geschrieben: ich habe noch gar keinen Code. Ich bin gerade erst dabei mir eine Lösung auszudenken.
achso, also under Construction ...
Manfred 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.
ich denke du musst es andersrum sehen. Wenn du die Kunden sortiert haben willst musst das der
"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
Benutzeravatar
Manfred
Foren-Administrator
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

Beitrag von Manfred »

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.
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
Martin Altmann
Foren-Administrator
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

Beitrag von Martin Altmann »

Moin,
in dem einen Browse kannst Du doch Felder aus verschiedenen Datenbanken anzeigen! Oder nicht?

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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

Beitrag von Koverhage »

Manfred,

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
Benutzeravatar
Manfred
Foren-Administrator
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

Beitrag von Manfred »

Hi,

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!!
Benutzeravatar
Martin Altmann
Foren-Administrator
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

Beitrag von Martin Altmann »

Aber nur klein und nur am Rande :!:
:lol:

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Manfred
Foren-Administrator
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

Beitrag von Manfred »

Oops,

Martin Du lebst ja noch.... :shock:
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
Martin Altmann
Foren-Administrator
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

Beitrag von Martin Altmann »

Klar - aber ich bin trotzdem nicht der Holzmichel :!:
:grommit:
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.
Antworten