none
Suche und Übernahme von Daten aus Liste 1 in Liste 2 RRS feed

  • Frage

  • Hallo,

    ich habe folgende Fragestellung zu lösen und bin gerade etwas ratlos.

    Ich muss in Liste 1 einen Wert suchen (zB Kundenname, Kundennummer). Vom Suchergebnis ausgehend, soll in einer zweiten Liste ein Eintrag angelegt werden, in dem zB Kundenname und Kundennummer übernommen werden und etliche andere Werte noch zusätzlich eingetragen werden. 

    Erschwerend kommt hinzu, dass die Liste mit Kundendaten 65000 Einträge hat - also kommen herkömmliche Programmierung (c#) nicht anwenden kann und durch die Schwellwerte von 5000 Elementen und Office 365 viele andere Dinge auch nicht funktionieren (Verlinkung zwischen Listen).

    Hat jemand einen Tipp?

    Vielen Dank,

    Erich von Maurnböck

    Montag, 8. Juli 2019 18:59

Alle Antworten

  • Hallo,

    soweit mir bekannt ist eine List nur durch den Index und durch die max Größe von 2GB beschränkt. Der Index ist ein Int32 und kann über 2 Milliarden zustände darstellen. 

    Ich sehe also kein Problem das mit C# zu machen.

    Je nach dem woher die Daten kommen könntest Du ja auch nur einen teil der Daten in den Arbeitsspeicher laden.

    Wenn man ein FullHD Bild 1920x1080 einliest und die Pixel in ein Array packte hat man 2.073.600 Einträge die dann nach etwas durchsucht werden. Jedes Pixel hat wiederum 3-4 (RGB o. RGBA) weiter Eigenschaften.

    So etwas wir jeden Tag gemacht


    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings



    Montag, 8. Juli 2019 20:27
  • Hi Thomas,
    da die Frage im SharePoint Forum gestellt wurde, sind die SharePoint-Listen gemeint. Und da können maximal 5000 Listeneinträge gelesen werden.

    Ergänzung:

    Möglich ist die Verarbeitung von Listen/Bibliotheken mit mehr als 5000 Einträgen, indem Portionen verarbeitet werden. Dazu wird einfach zuerst die Anzahl der Elemente geholt und dann mittels ItemCount die zu lesende Anzahl "gefiltert". 


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks


    Dienstag, 9. Juli 2019 05:37
  • Hallo Peter,

    normalerweise antworte ich auch nicht auf SharePoint Fragen da ich keine Ahnung davon habe. Ich hatte diese Frage aber als und/oder verstanden. Ich war bisher der Meinung das SharePoint nur mit JavaScript entwickelt wird.

    Ist C# in SharePoint nur eine Skriptsprachen die Clientseitig ausgeführt wird? Oder wie kann man sich das vorstellen?



    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings

    Dienstag, 9. Juli 2019 13:37
  • Hi Thomas,
    der SharePoint ist ein Server, der alle Daten in einer SQL Server Datenbank hält, beliebig skalierbar ist (Farm mit einem oder vielen SharePoint Servern incl. Load Balancer bei mehreren Web-Frontends, Office Online Server, WorkFlow Farm). Jeglicher Zugriff auf die SharePoint Farm läuft über http/https. Für On-Premise Farmen sind auch in C#.NET oder VB.NET geschriebene Farmlösungen möglich, die dann am "offenen Herzen" ausgeführt werden und bei unzureichenden Kenntnissen des Programmierers zu Problemen führen können (insbesondere nicht freigegebene, unverwaltete Ressourcen, die dann notwendige häufige Neustarts der Farm erfordern). SharePoint Online lässt z.B. keine Farmlösungen mehr zu. Microsoft favorisiert deshalb alternative Konzepte ohne Farmlösungen. Im Problemfall stürzt dann halt nur eine vom Programmierer erstellte Komponente außerhalb der SharePoint Farm ab. Diese Konzepte sind:

    1. JavaScript im Browser. Für den Zugriff auf die API-Endpunkte der SharePoint Farm hat mirocsoft eine Objektbibliothek für die Kapselung des clientseitigen Zugriffs bereitgestellt (JSOM). 

    2. Remote Server mit Vertrauensstellung zur SharePoint Farm, wobei als Remote Server ein IIS oder auch ein anderer Web Server (z.B. Apache) zur Anwendung kommen kann. Da laufen dann die serverseitigen Lösungen des Anwenders.

    3. C#.NET und VB.NET Programme irgendwo außerhalb der SharePoint Farm. Das können Konsolen-, WindowsForms-, WPF- oder sonstige Anwendungen sein. Dafür hat Microsoft auch eine Objektbibliothek für die Kapselung des clientseitigen Zugriffs bereitgestellt (CSOM).

    Der Zugriff läuft über einen ClientContext, der zuerst incl. Zugangsname und Kennwort den Zugang über die angegebene URL auf das gewünschte Portal (SharePoint-Web-Frontend) aufbaut. Dann sind die Anfragen an den SharePoint einzureihen und auszuführen. Erst danach stehen die Daten zur Verfügung. Die Technik ist etwas gewöhnungsbedürftig und im Problemfall ist die Ursachenforschung recht mühselig, insbesondere, wenn CAML genutzt wird. CAML ist eine "Abfrage-Darstellung", die als XML-Stream an den SharePoint gesendet wird, um selektiv Elemente aus Listen und selektiv nur bestimmte Spalten anzufragen. Anstelle von CAML können auch Lambda-Ausdrücke genutzt werden.

    Damit der SharePoint nicht überlastet wird, sind rückgegebene Listen für den Nicht-Admin auf 5000 Elemente beschränkt (früher 2000), ohne dass es Fehlermeldungen gibt, wenn da noch mehr hätte geliefert werden können. Man sollte also zuerst nach der Anzahl fragen und ggf. in Portionen abrufen. Über den ItemsCount kann eine von-bis-Abfrage organisiert werden, sodass die Daten portionsweise abgerufen werden können.



    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Dienstag, 9. Juli 2019 14:26
  • Danke für die ausführliche Antwort. Jetzt verstehe ich das Konzept dahinter und die Problemstellung.

    Ich hatte mir vor einigen Jahren so eine kostenlose Farm aufgesetzt um damit etwas zu spielen. Das ganze System war aber so gewaltig das ich schnell die lust daran verloren habe. Da ich auch nie daran interessiert war für irgendeine Firma als Softwareentwickler zu arbeiten habe ich das ganze Projekt aufgegeben. 

     

    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings

    Dienstag, 9. Juli 2019 19:53
  • Hallo Thomas,

    vielen Dank für die Antwort - mein Problem ist, dass ich am Frontend "nur" ohne Programmierung arbeiten kann. Der "Importer" läuft zwar mit C# wöchtentlich im Hintergrund, aber auf Sharepoint Online greife ich nur mit Bordmitteln (Infopath/Sharepoint Designer) zu.

    Die Anzahl ist beim Einspielen auch nicht so sehr das Thema, aber ich kann in einer zweiten Liste nicht auf die Kunden zugreifen (eben wegen dem 5000er Limit).

    Viele Grüße,

    Erich

    Montag, 15. Juli 2019 10:34
  • Hallo,

    habe mittlerweile in einem Infopath Formular der Liste 2 die Inhalte von Liste 1 (Kunden) eingebunden. Ich kann auch nach dem Titelfeld suchen (exakte Schreibweise), aber sonst nicht. Ein zweites Feld ist nicht durchsuchbar.

    Aber - beim Start erhalte ich den "Schwellwert" Fehler, obwohl das Formular dann funktioniert.

    Die Daten kann ich dann auch übernehmen (im Formular) - vom ersten gefundenen Datensatz (falls das Ergebnis mehrere Datensätze auswirft).

    Gibt es noch Tipps von Eurer Seite, wie ich 

    1. auch andere Felder bzw. nach Teilen von Texten suchen kann

    2. den Fehler beim Öffnen des Infopath Formulars verhindern kann

    Danke für Tipps,

    Erich

    Dienstag, 16. Juli 2019 17:52
  • Lösung:

    Hallo,

    ich habe für mich eine passable Lösung gefunden, musste nur einen "Denkfehler" im Infopath Formular umgehen und mit mit der Programmierung der Sharepoint online Version auf Office 365 anfreunden, die teilweise sehr umständlich ist (oder nur mir so erscheint).

    Weg:

    1. Mittels C# "Importer" -> Daten auf Sharepoint

    2. Infopath Formular auf Liste 2 adaptiert mit 

    2a. Sekundäre Datenquelle (aus Liste 1). Und diese muss so eingestellt sein, dass die Daten beim Öffnen NICHT AUTOMATISCH aufgerufen werden.

    Der Rest war einfach: Queryfield einfügen, mit Button eine Suche anstossen und Wert der Felder in Liste 2 aus den gefundenen Feldern aus Liste 1 füllen. Hinweis: das geht nur dann optimal, wenn im Suchfeld eindeutige Werte sind.

    Das war es schon.

    Herzliche Grüße,

    Erich von Maurnböck


    Dienstag, 23. Juli 2019 12:46