Abrufen von Klassenwerten basierend auf einem Schlüssel

8

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%     
Kavvson 01.12.2014, 20:49
quelle

1 Antwort

5

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:

  • Die Mailinglistendaten werden irgendwo wie in List(of MailItem) geladen
  • Die App hat so etwas wie die Customer -Klasse und eine Liste (des Kunden)
  • Wir wissen, dass ByWho und ForWho FKs sind, aber was sie sind FKs zu ist immer noch nicht klar. Ich nehme den Kunden an, da keine anderen Akteure erwähnt werden

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.

%Vor%

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.

    
Plutonix 07.12.2014, 03:03
quelle

Tags und Links