Oppure

Loading
31/10/08 13:53
Pinnolo
Dopo aver risolto il problema dell' altro topic, sorgono ora due nuovi inceppi dovuti non a errori di sintassi, bensì alla mia ignoranza sul campo.
Vorrei infatti che attraverso la pressione di un tasto il programma mi stampi il datagrid che visualizza i dati di un database.

Allo stesso modo vorrei implementare nel programma una funzione di ricerca (che cerchi stringhe nel database)

Vi prego di aiutarmi. Grazie in anticipo.
aaa
01/11/08 8:40
Il Totem
Per stampare il datagrid devi sporcarti le mani. Ossia devi eseguire tu tutti i calcoli relativi alle posizioni delle celle sul foglio, e stamparle usando un oggetto Graphics:
totem.altervista.org/guida/versione2/…
totem.altervista.org/guida/versione2/…
Un'alternativa è trasferire il DataGrid su un file di testo normalissimo e stampare il file di testo con:
Dim P As New Process
P.StartInfo.FileName = "file"
P.StartInfo.Verb = "Print"
P.Start()


La funzione di ricerca mi sembra abbastanza banale: basta ciclare nel datagrid con due for (uno sulle righe, uno sulle colonne) e controllare il contenuto di ogni cella.
aaa
01/11/08 10:43
Pinnolo
tu sei molto esperto, ma io no per cui ti pregherei, se puoi, di spiegarti con parole più povere...

come faccio a copiare il datagrid in un documento di testo?
Ultima modifica effettuata da Pinnolo 01/11/08 10:48
aaa
02/11/08 9:07
Il Totem
Beh... prendi la prima cella della prima riga e la scrivi; perndi le seconda della prima riga e la scrivi; prendi la terza e la scrivi; e ripeti tutto per tutte le righe.
For I As Int32 = 0 To DataGrid.Rows.Count - 1
  For J As Int32 = 0 To DataGrid.Columns.Count - 1
    File.Write(DataGrid.Rows(I).Cells(J).Value & " ")
  Next
  File.WriteLine()
Next

Ma questo è il metodo meno bello, perchè devi chiedere all'utente di impostare come carattere del notepad un font a spaziatura fissa (come Courier New o Lucida Console), poiché altrimenti i valori verrebbero tutti sfasati. E poi ti devi anche calcolare la lunghezza da far occupare ad ogni valore, per farli stare uno sotto all'altro rispettando l'ordine della tabella.
aaa
02/11/08 23:25
Pinnolo
Postato originariamente da Il Totem:

Beh... prendi la prima cella della prima riga e la scrivi; perndi le seconda della prima riga e la scrivi; prendi la terza e la scrivi; e ripeti tutto per tutte le righe.
For I As Int32 = 0 To DataGrid.Rows.Count - 1
  For J As Int32 = 0 To DataGrid.Columns.Count - 1
    File.Write(DataGrid.Rows(I).Cells(J).Value & " ")
  Next
  File.WriteLine()
Next

Ma questo è il metodo meno bello, perchè devi chiedere all'utente di impostare come carattere del notepad un font a spaziatura fissa (come Courier New o Lucida Console), poiché altrimenti i valori verrebbero tutti sfasati. E poi ti devi anche calcolare la lunghezza da far occupare ad ogni valore, per farli stare uno sotto all'altro rispettando l'ordine della tabella.
mi ci sto mettendo d' impego e sto cercando di farlo... in effetti questo è il metodo meno bello e non mi va di usarlo.

Intanto la funzione di ricerca l' ho implementata utilizzando un altro metodo.
aaa