Hallo Ich stieß auf ein Problem beim Erstellen meines Schulprojekts.
Einige Beschreibung:
Listy - es ist ein Objekt, und es wird von einer SQL-Abfrage angehängt und wird später zu einer Listenbindung. Kunden - Kunden: ID, Name, Nachname
Listy sql dump Beispiel
%Vor%Das Problem
Meine Datagrid-Ansicht sieht genau so aus wie ein mysql-Ergebnis. Ich möchte eine freundlichere Anzeige erhalten. Wenn ich also by H2 202 (eine Kunden-ID) habe, möchte ich in der Datagrid-Ansicht Beispielname Beispiel angezeigt werden Nachname. Es muss irgendwie mit diesem Code gemacht werden. Ein nettes Feature wäre auch die Fähigkeit, eine Klasse Kunden irgendwie zu löschen und zu aktualisieren.
Klassenkern
%Vor%Klassenkunden
%Vor%Klassenliste
%Vor% a Listy query has for example 50k rows so it can become slow
In diesem Fall ist Ihre DB möglicherweise schlecht entworfen oder strukturiert, oder die SQL-Abfrage könnte suboptimal sein. 50k sind nicht viele Daten, und das Vorladen aller Daten und das Verwenden von 3 Klassen, um das gleiche Ergebnis von Hand zu codieren, ist wahrscheinlich nicht viel schneller, wird aber fehleranfälliger.
Das heißt, Ihre display_single_name()
Funktion könnte ziemlich einfach sein. Angenommen:
List(of MailItem)
geladen
Customer
-Klasse und eine Liste (des Kunden) Der existierende Code hat keinen Ort, an dem diese Informationen gespeichert werden können, also ein paar Änderungen:
%Vor% Folgendes verwendet myMailItems
, das ist ein List(Of MailItem)
, um die Informationen zu den Postsendungen einschließlich der aufgelösten Namen zu speichern. CustList
ist ein List(of Customer)
. Dies wäre im Prinzip Core.init_customers()
, aber es gibt keine wirkliche Notwendigkeit, dass es eine spezielle Klasse ist.
Die Kundensuche wird über eine Hilfsfunktion gelöst:
%Vor% In den Beispieldaten würden Sie es (anscheinend) mit 7, 3 und 202 aufrufen, um den zugehörigen Kundennamen zu erhalten. Die neue Eigenschaft FullName
, die wie gewünscht formatiert wurde, gibt den Namen zum Speichern in der Liste zurück.
Die Klasse MailItem
konnte die Suche selbst im Konstruktor durchführen, sofern sie einen Verweis auf die Kundenliste hatte. Natürlich könnte es auch eine SQL-Suche durchführen, um die Namen für jeden Akteur zu erhalten.
Varianten für das Nachschlagen:
%Vor%Ergänze die Funktion, um den Namen zu erhalten:
%Vor%Hinweis:
Dies ist keinesfalls eine bessere Lösung als eine SQL JOIN-Abfrage; scheint aber genau das zu sein, wonach Sie suchen.
Damit die Suche funktioniert, müssen Sie alle die Kunden in der DB zum Client-PC bringen, nur für den Fall, dass sie könnten im aktuellen Datensatz "listy" verwendet werden. Dann muss der Code für jedes Objekt ein Objekt erstellen und es speichern. Das wird Zeit und Gedächtnis brauchen.
Eine Alternative wäre es, SQL-Abfragen auszulösen, um Cust # 3 bei Bedarf zu erhalten und in einer List zu cachen / speichern, also wenn es wieder angezeigt wird, können Sie es wiederverwenden und nur die DB treffen wenn es nicht in der Liste ist. Aber wieder, Sie tun nur in Code, was mit einer richtigen SQL JOIN-Abfrage getan werden kann.