Collezione visiva, Ottieni tutti i record, non solo mostrato solo sul controllo della griglia

StackOverflow https://stackoverflow.com/questions/9363309

  •  28-10-2019
  •  | 
  •  

Domanda

Sto cercando di esportare TUTTO Record da una raccolta visiva a Excel.

Il mio codice sembra:

Imports System.Runtime.InteropServices.Automation

Namespace LightSwitchApplication

    Public Class Assignacions_GR_a_DPT_o_IR_manuals

        Private Sub ExportacioExcel_Execute()
            Try
                ...

                For Each GR In Me.A_LIGHTSWITCH_QUERY
                    rowCount += 1
                    excel.Cells(rowCount, 1).Value = GR.ToString

Ma solo attualmente A_LIGHTSWITCH_QUERY Vengono esportati i record mostrati in griglia. C'è un modo per ottenere tutti i record di query?

Il codice è scritto nella barra dei comandi della schermata Eseguire il codice.

MODIFICATO

Sul tuo punto 1,3 in Yann Risposta:

La schermata ha 2 query: Main_Query e Lookup_Query.

Il primo, main_query, è vincolato a una griglia.

Lookup_Query è una query per cercare valori per un campo Main_Query (scelte su una casella di completamento automatico).

Per ogni loop si itatera su Lookup_Query:

For Each GR In Me.LOOKUP_QUERY

E solo gli elementi Looup_Query che appaiono nella schermata vengono recuperati dal loop.

Campione:

MAIN_QUERY = ORDER LINE (QTY, Product, Order, ...)
LOOKUP_QUERY = PRODUCT (NAME, ...)

For Each P In Me.PRODUCT

Only retrieve product that appear in selected order, I need ALL products.

Si noti che posso disabilitare la pagina, ma se order Non contiene almeno una riga per ogni prodotto che alcuni prodotti ci mancheranno all'esportazione.

È stato utile?

Soluzione

Risposta da Matt Evans a Visual Studio LightSwitch - Domande generali Forum:

Si desidera guardare l'Entityset, che corrisponde ai dati sul server. VisualCollection è il negozio di supporto per le griglie sullo schermo.

Se hai un'entità denominata "Cliente", nel tuo database intrinseco (ApplicationData) questo mostrerebbe i clienti:

for each c in Me.Dataworkspace.ApplicationData.Customers

    rowCount += 1
    excel.Cells(rowcount, 1).Value = c.Name

Altri suggerimenti

Se usi una query che ha parametri per popolare la griglia e hai abilitato il paging, la griglia avrà solo una "pagina" di dati in qualsiasi momento. Questo è il motivo per cui non stai ottenendo tutti i record.

  1. Il modo più semplice è disabilitare il paging sulla collezione, ma ovviamente se c'è un gran numero di record potrebbe non essere una buona idea farlo. Poi di nuovo vuoi esportare tutti i record comunque, quindi verranno tutti trascinati dal cliente, che tu li pagina o no.

  2. Un altro modo è sequenziare programmaticamente le pagine del tuo codice (ma puoi anche fare il metodo uno).

  3. Oppure puoi usare la stessa query che popola la griglia, ma nel codice invece di usare la collezione della griglia (e di nuovo stai ancora tirando tutti i record al client).

Yann, so che questo è stato un thread da un po 'di tempo, ma voglio solo chiarire una cosa. Se ho bisogno di iterare attraverso ogni record in questa query a griglia (che ha una paginazione), posso fare una di queste:

  1. Crea un'altra query sullo schermo (con gli stessi filtri ma nessuna impaginazione) e usalo per l'iterazione
  2. Vai all'Entityset (cioè Dataworkspace.ApplicationData.TableName), applica i filtri appropriati e itera da lì

Grazie per tutto il tuo contributo a LS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top