Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - francy

Pagine: [1]
1
Buon pomeriggio a tutti, dopo i preziosi consigli di ieri sono arrivato, speriamo, alla conclusione del codice del quale avevo bisogno.
Spero questo esempio possa servire a tutti:

Dim Apidb As New Connection
Dim query As String
Dim risultato As Result
Dim i As Integer
Dim raccnomi, raccdescr, raccfoto As New String[]
Dim racclbl, racctxtarea, raccpic As New Object[]
Dim cnt As Control

Connections["Apidb"].open

If Apidb.Error Then
  Message("Impossibile trovare il db. Importare un db funzionante")
  Else
    query = "SELECT nome, sigla, descrizione, foto FROM nome_apiari"
    risultato = Connections["Apidb"].Exec(query)
   
    If risultato.Available Then
        For Each risultato
                    raccnomi.Add(risultato!nome & " " & "(" & risultato!sigla & ")")
                    raccdescr.Add(risultato!descrizione)
                    raccfoto.Add(risultato!foto)
        Next
       
        Connections["Apidb"].Close
       
  For i = 0 To raccnomi.Max
    For Each cnt In Me.Controls
      Select Case Object.Type(cnt)
          Case "Label"
                racclbl.Add(cnt)
                With racclbl
                      .enabled = True
                      .transparent = True
                      .foreground = &HFFFFBF&
                      .text = raccnomi(i)
                      .alignment = 3
                      .visible = True
                End With
          Case "TextArea"
                racctxtarea.Add(cnt)
                With racctxtarea
                      .enabled = True
                      .foreground = &HFFFFBF&
                      .text = raccdescr(i)
                      .alignment = 3
                      .visible = True
                      .wrap = True
                End With
        Case "PictureBox"
                raccpic.Add(cnt)
                With raccpic
                      .enabled = True
                      .Picture = Picture.Load(raccfoto(i))
                      .stretch = True
                      .visible = True
                End With
        End Select
    Next
  Next
  Inc i
  Else
        Message("Nessun Apiario è presente nel db")
    Endif
Endif

PS: vi ricordo che l'indice i deve andar messo tra parentesi quadre e non tonde.

2
Ho provato l'esempio ed è proprio ciò che volevo fare sin dall'inizio. Appena finirò con la cena e gli invitati adatterò l'esempio alle mie esigenze e posterò il codice. In ogni caso credo che questo forum abbia degli utenti interessanti da cui poter imparare.

3
Se provo a fare tutto in un unico ciclo mi da come errore out of bounds quando associo gli elementi dei due array. Qualche suggerimento di "codice"?!?

4
Scusate per il nuovo messaggio, ma ho trovato la soluzione e la posto in un nuovo "spazio" per evitare confusione. Grazie a tutti per il prezioso aiuto fornitomi.

Problema: più label presenti in un form alle quali associare a ciascuna un nome ed una sigla, questi ultimi valori presi tramite query da un db.

Soluzione: serializzare in un array di stringhe i nomi e le sigle; serializzare le label presenti nel form in un array di oggetti; associare al corrispondente indice di ciascun elemento dell'array di oggetti l'elemento dell'array di stringhe.

Il tutto sono riuscito a trudurlo con questo codice:

Dim risnome As Result
Dim i As Integer
Dim raccoltanome As New String[]
Dim raccoltacnt As New Object[]
Dim cnt As Control

........apro la connessione con il db (OK), faccio la mia query (OK)...........

For Each risnome
  raccoltanome.Add(risnome!nome & " " & "(" & risnome!sigla & ")")
Next

For Each cnt In Me.Controls
  If Object.Type(cnt) = "Label" Then
   raccoltacnt.Add(cnt)
  Endif
Next

For i = 0 To raccoltanome.Max
  raccoltacnt(i).text = raccoltanome(i)
Next
Inc i

Per qualsiasi miglioria al codice, i consigli sono sempre ben accetti.

PS: l'indice i è stato messo tra le parentesi tonde perchè se messo tra parentesi quadre una volta inviato il msg non vengono scritte ne le parentesi ne l'indice.

5
Ok con la dichiarazione New String[] il mio array è inizializzato. Poi con:

For Each risnome
  raccolta.Add(risnome!nome & " " & "(" & risnome!sigla & ")")
Next

riesco a riempirlo con i dati che mi interessano. Una volta avviato il debug, e tornando all'inizio del mio problema, in ogni label presente nel form la proprietà text viene riempita solo con il primo valore del record della mia query. Il codice utilizzato è:

Dim i As Integer
Dim raccolta As New String[]
Dim cnt As Control

........apro la connessione con il db (OK), faccio la mia query (OK).............

For Each risnome
  raccolta.Add(risnome!nome & " " & "(" & risnome!sigla & ")")
Next

For Each cnt In Me.Controls
  If Object.Type(cnt) = "Label" Then
    For i = 0 To risnome.Max
    Object.SetProperty(cnt, "Text", raccolta)
    Inc i
    Next
  Endif
Next

Ultimo aggiornamento:

Se Inc i lo si lascia così com'è allora tutte le label come proprietà .text saranno associate al primo record della query. Se Inc i lo si dovesse mettere tra il next e l'endif le proprietà .text saranno associate all'ultimo record della query. Il mio problema è però quello di associare ad una label <-----> un solo nome. Aiutatemi perfavore.

6
Allora, la situazione sembra paradossale:

Dim i As Integer
Dim raccolta As String[]

For i = 0 To risnome.Max
  raccolta = risnome!nome              .........oppure......... raccolta.add(risnome!nome)
  Inc i
  risnome.MoveNext
Next

.................oppure...............

i=0
For Each risnome
  raccolta = risnome!nome          .........oppure......... raccolta.add(risnome!nome)
  Inc i
Next

In entrambi i metodi raccolta=risnome!nome è un null object. A questo punto credo che sia assurdo perchè una volta dichiarato l'array raccolta e presi dei valori dal db che sono dei nomi e quindi delle stringhe che non contengono nessun carattere speciale, perchè si rileva l'oggetto nullo?!?

P.S.: anche se si visualizza solo raccolta dovrebbe esservi anche l'indice i, cioè raccolta(i)

7
Grazie per l'aiuto. Allora, si, per nome della label intendo il testo che la label deve mostrare sul form.
Ulteriore tentativo:

Dim y As Integer
Dim raccolta As Object[]
Dim cnt As Object (oppure Control)

For Each cnt In Me.Controls
  If Object.Type(cnt) = "Label" Then
    y = 0
    raccolta[y].Add(cnt) (oppure raccolta[y].Add(cnt.name))
    Inc y
  Endif
Next

Il problema è sempre lo stesso: L'argomento di raccolta[y].add() è sempre un null object (cnt oppure cnt.name).
Sicuramente risolto questo intoppo di serializzazione i vostri esempi sono entrambi funzionanti e validi.

8
Altri linguaggi / Comando bash per modifica sfondo desktop
« il: 07 Settembre 2012, 23:14:17 »
Ciao ragazzi, dovrei modificare lo sfondo del desktop. Il comando che ho provato via terminale ma che non ha dato i risultati sperati è:

gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type String --set /desktop/gnome/background/picture_filename /path/nomefile.png

Il terminale risponde che:

Errore nell'impostare il valore: Impossibile inserire un valore alla chiave "/desktop/gnome/background/picture_filename" poiché il server di configurazione non ha database scrivibili.

Altre soluzioni?

Grazie a tutti

9
Allora:
Dim qnome As String

qnome = "SELECT nome, sigla FROM nome_apiari"
risnome = apidb.Exec(qnome)

Altro tentativo fatto in questi minuti:

Dim raccolta As Object[]
Dim i As Integer

raccolta.Add(Me.nomelbl0)
raccolta.Add(Me.nomelbl1)
raccolta.Add(Me.nomelbl2)

raccolta.Add ....... per tutte le label presenti nel form

For i = 0 To risnome.max
raccolta(i).text = risnome!nome & " " & "(" & risnome!sigla & ")"
Next
i = i + 1

Durante il debug per quest'ultima soluzione mi si rileva che Me.nomelbl0 e così via sono degli oggetti nulli.

In realtà per chi ha avuto "sotto le mani" il vs 2012 per win8, questo form dovrebbe essere un qualcosa che si avvicina al group item di una qualsiasi soluzione in stile metrò.

10
Ciao ragazzi, sono nuovo del forum e spero di potervi essere di aiuto come voi lo sarete sicuramente per me.
Devo creare un piccolo gestionale specifico,(altamente personalizzato), per la mia attività. Appena sarà pronto lo pubblicherò sul sito.
Adesso però mi ritrovo con un form pieno di label ed un db dal quale facendo una query devo prendere dei nomi. Ad ogni label dovrei associare un nome.
L'unica soluzione che mi è venuta è stata la seguente:

Dim cnt As Object
Dim risnome As Result

For Each cnt In Me.Controls
        If Object.is(cnt, "Label") Then
                Object.SetProperty(cnt, "Text", risnome!nome & " " & "(" & risnome!sigla & ")")  
        Endif
Next

Il problema è che così facendo tutte le label presenti nel form come proprietà .text possiedono nome e sigla del primo record della query. No ne riesco a venire a capo.
Grazie anticipatamente a tutti.

Pagine: [1]