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 - RiCi12

Pagine: 1 [2] 3 4
16
allora, ecco i sorgenti. Non ho avuto il tempo di commentarli, mi dispiace. Cercherò di uploadarli di nuovo, con un po' di commenti. Il problema, se lo avrete anche voi, sarà durante l'evento (form_open) di fmain..

grazie,
ciao

17
mmm, ok, ma lo posso postare solo domani, mi dispiace(anzi, vi ringrazio), perché sono su un altro pc, e non ho i sorgenti..

18
no quella parte funziona perfettamente, ho fatto numerose prove, e la ricerca, e il "cambio", funzionano alla perfezione, il problema non sussiste.

Il problema dell'errore si verifica soltanto con il pezzo di codice riferito all'avvio..

19
mmmm,strano,mi ripete questo...

Codice: [Seleziona]
"SELECT * FROM classe"


E, hres, assume valore "null"

20
Citazione

Ceskho ha scritto:
hres è dichiarato?


si si...
Citazione

picavbg ha scritto:
Citazione

RiCi12 ha scritto:
.......................

Codice: [Seleziona]

nomedb = "registro_del_prof_" & user.Name
  path = user.Home
  WITH $hConn
    .type = "sqlite3"
    .host = path
  END WITH
  $hConn.name = nomedb
  classesel = lstclassi.Text
  lstmat.Clear()
  $hConn.Open()
  sql = "SELECT * FROM mat WHERE classi2 LIKE classesel"
  hres = $hConn.exec(sql)
  FOR EACH hres
    lstmat.Add(hres!mat)
  NEXT
  $hConn.Close()



Uso da poco Sqlite3 e quindi lo conosco altrettanto poco, però secondo me il problema é dentro l'istruzione 'sql=' dove leggo l'uso della funzione LIKE, la quale permette la ricerca di tutti quegli elementi di tabella "classi2" il cui contenuto comprenmda almeno un crt della variabile "classesel". Ecco, mi pare che LIKE desideri che la stringa da ricercare sia compresa fra due "*". Poiché "classesel" contiene un valore proveniente da  "lstclassi.Text", può darsi che manchino proprio gli "*" di delimitazione voluti dalla funzione LIKE. Potresti perciò modificare l'istruzione "sql=" nella seguente:
Codice: [Seleziona]
sql = "SELECT * FROM mat WHERE classi2 LIKE" & "*" & "classesel" & "*"

e riprovare.
Magari, quello che ho notato non c'entra niente, ma provare non fa mai male.  :-)  :ciao:


giusta osservazione, ma quello li non è un problema. Mi son visto costretto, nel programma precedente, a fare in modo che cercasse solo la parola esatta, e avevo risolto così...
Codice: [Seleziona]
sql = "SELECT * FROM voti WHERE materia2 LIKE '" & materiasel & "'"

Risolvendo perfettamente..

Il problema, però non si va a risolvere: com'è possibile che in parte vada e in parte no? Lo stesso pezzo di codice, oltretutto. Non ha minimamente senso..
Comunque, vi posto il pezzo di codice incriminato: praticamente, all'avvio(form_open), gli faccio controllare se esiste tale database, altrimenti lo crea. Se già esiste, mi va a leggere i valori in esso contenuto, e mi prende le varie classi e me le mette in una listbox.. E basta..E già qui non va, dandomi l'errore sull'hres = bla bla bla..Se cancello il database, e uso dei valori che inserisco at the moment( senza usvire dal programma), il pezzo riportato sopra va', tranquillamente(quello segnalato come funzionante)
Comunque..
Codice: [Seleziona]
PUBLIC SUB Form_Open()
  nomedb = "registro_del_prof_" & user.Name
  path = user.Home
   
  WITH $hConn
    .type = "sqlite3"
    .host = path
  END WITH
 
  $hConn.Open()
  IF NOT $hConn.Databases.Exist(nomedb) THEN
    $hConn.databases.Add(nomedb)
    $hConn.name = nomedb

    $hConn.Close()

    $hConn.Open()
   
    sql = "CREATE TABLE 'classe' ('id' INTEGER PRIMARY KEY, 'classi' VARCHAR(255) DEFAULT NULL);"
    htable = $hConn.exec(sql)
    sql = "CREATE TABLE 'mat' ('id' INTEGER PRIMARY KEY, 'classi2' VARCHAR(255) DEFAULT NULL, 'materia' VARCHAR(255) DEFAULT NULL);"
    htable = $hConn.exec(sql)
    sql = "CREATE TABLE 'stud' ('id' INTEGER PRIMARY KEY, 'classi3' VARCHAR(255) DEFAULT NULL, 'stud' VARCHAR(255) DEFAULT NULL);"
    htable = $hConn.exec(sql)
    sql = "CREATE TABLE 'voti' ('id' INTEGER PRIMARY KEY, 'materia2' VARCHAR(255) DEFAULT NULL, 'voto' VARCHAR(255) DEFAULT NULL, 'stud2' VARCHAR(255) DEFAULT NULL);"
    htable = $hConn.exec(sql)
    $hConn.Close()
ELSE  
  lstclassi.Clear()
  $hConn.Close()
  $hConn.Open()
  sql = "SELECT * FROM classe"
  hres = $hConn.exec(sql)
  FOR EACH hres
    lstclassi.Add(hres!classi)
  NEXT
  $hConn.Close()
   
ENDIF
END

l'errore lo riporta li, solo li...

21
Io e ditabase andiamo d'amore e d'accordo..

Comunque, dopo aver finito il mio programma, e in attesa che il mio amcio torni a casa per farmi spiegare una cosa(magari, però...vabbé), ho deciso di fare un'altra versione del mio programma, per un pubblico un po' diverso..

Comunque, prendo i pezzi di codice dal vecchio programma (almeno quelli per i database), ma continua, in una maniera a dir poco indecente, a darmi il solito errore, ovvero quello del titolo..

vi mostro un pezzo di codice, un po' confusionario, forse..

Codice: [Seleziona]

nomedb = "registro_del_prof_" & user.Name
  path = user.Home
  WITH $hConn
    .type = "sqlite3"
    .host = path
  END WITH
  $hConn.name = nomedb
  classesel = lstclassi.Text
  lstmat.Clear()
  $hConn.Open()
  sql = "SELECT * FROM mat WHERE classi2 LIKE classesel"
  hres = $hConn.exec(sql)
  FOR EACH hres
    lstmat.Add(hres!mat)
  NEXT
  $hConn.Close()


e mi da errore sul..
Codice: [Seleziona]
hres = $hConn.exec(sql)


però...
Codice: [Seleziona]

$hConn.Close()
    lstclassi.Clear()
    $hConn.Open()
    sql = "SELECT * FROM classe"
    hres = $hConn.exec(sql)
    FOR EACH hres
      lstclassi.Add(hres!classi)
    NEXT
    $hConn.Close()


qui non mi da alcun problema, nulla di nulla..Non riesco a capirlo..E aprendo il database con sqlitebrowser, nessun problema, nulla di nulla..E' tutto in ordine..

thanks..

22
Programmazione (Gambas 2) / Re: Visualizzare una matrice
« il: 06 Luglio 2009, 19:38:18 »
Citazione

carletto66 ha scritto:
Grazie mille!!! Mi avete aiutato veramente moltissimo!
un'altra domandina........come faccio a cambiare la dimensione delle colonne e delle righe?
Grazie :-D


della grindview(o come si scrive)?

se si, grindview1.row.count =
gridview1.column.count=

se non erro...

23
oka, ho dato una rapida occhiata(fatto partire e provato a lanciare un programma), tutto ok anche su kde..

Grazie mille..

24
oh, mi serviva proprio, dato che sui repo ufficiali di ubuntu sono un po' indietro, e io con la compilazione da sorgenti nonv ado molto d'accordo( anche se non so il perché). Adesso installo kubuntu 9.04 (kde3 remix), e poi installo questi.
Grazie fsurfing..

25
Avvisi / Re: Nuovi moderatori
« il: 02 Luglio 2009, 23:55:18 »
congratulazioni a tutti i nuovi moderatori:-)
Buon lavoro!!!!

26
Programmazione (Gambas 2) / Re: litigando con isnumber()
« il: 02 Luglio 2009, 20:34:11 »
grazie mille. In poche parole, dimenticavo il val...

Citazione

Ceskho ha scritto:
@ RiCi12

Posso darti un consiglio? Molto spesso quando si programma si da per scontato che la memoria di un computer sia infinita. Certo, per chi magari scrive programmi che richiedono poca memoria il problema della stessa non sussiste, però cosa accadrebbe se programmatori del calibro di quelli di Firefox o OpenOffice si mettessero a dichiarare più variabili di quante in realtà ne servano?

Sarebbe buona norma alle volte ottimizzare il codice magari rinunciando un pochetto alla leggibilità.

Ciò che hai fatto tu può essere riassunto in un solo passaggio

Codice: [Seleziona]
print message (isnumber(value(textbox1.text)))



All'università iniziano a farti pensare anche in questi termini e tutto sommato non è una brutta cosa...

@ tornu

figurati...


Guarda, la prima votla che scrisi quel pezzo di codice, usai il metodo da te scritto, ovvero nessuna dichiarazione di variabili inutili. Quello che ho trascritto è stato la "2^ versione" del cdice, provata per controllare che il problema non fosse " la cncatenazione" di comandi, ovvero quella scritta da voi..

@giulio: grazie mille per la spiegazione, adesso capisco il perché..Maledetto visual basic.. :-?

27
Programmazione (Gambas 2) / [Risolto]litigando con isnumber()
« il: 02 Luglio 2009, 14:29:49 »
Eccomi ritornato dalle vacanze, ed eccomi, di nuovo, a litigare con isnumber, una cavolo di funzione che è da un po' che mi innervosisce.

Allora, io vorrei far controllare al mio programma se ciò che è scritto in una textbox è un numero, oppure altro. Ecco cosa avevo pensato.

Codice: [Seleziona]
dim ciao as string
dim prova as boolean
ciao = textbox1.text
prova = isnumber(ciao)
print message (prova)


Teoricamente, così dovrebbe funzionare. Ma nella pratica neanche l'ombra.

Se metto manulamente un numvero al posto di ciao (= isnumber(3)), mi appare una finestra con una bella T. Se invece lascio così, qualunque valore assuma ciao (un 9, oppure tre), la finestrella è sempre vuota.

Qualche idea?

Grazie, ciao

28
stranamente, sono riuscito a trovare la risposta per la cancellazione da solo. Guardicchiando un po'la guida e sbattendomi un po'...

Rimane la storia dell'ftp, in modo tale da poter finire tutto... :-D

Speriamo..

29
Segnalazione bug (Gambas 2) / bug inputbox?
« il: 24 Giugno 2009, 11:52:28 »
Ciao a tutti..

Ieri, stavo provando varie cosucce con database e con l'inputbox. Ma mi son accorto di una cosa.
Se avete in mente come è fatta una finestrella richiamabile con il comando inputbox, saprete che c'è uno spazio dove scrivere, un pulsante ok e uno annulla. Ma mi sono accorto che se io premevo il pulsante annulla (anche con il testo vuoto), questo si comportava come se io avessi premuto il tasto ok, ovvero salvando il "testo" nel mio database, cosa che non avrebbe dovuto fare, o sbaglio.

praticamente il mio codice era così..
Codice: [Seleziona]

btnadd_click()
c = inputbox("blablabla")

'varie cose per la connessione al db

hres!xxx= c
hres.update()
hres.commit()
hres.close()


E' normale oppure no? E' un comportamento dettato dalla struttura del mio codice?

Io alla fine ho risolto richiamando un'altra form...

ciao ciao

edit: mmm, bastava pensarci un po' sopra..Ci ho pensato, e ditemi se sbaglio: l'errore, è, in parte, causato dal codice così strutturato. Il pulsante annulla, praticamente, serve per chiudere la finestrella e per rendere il testo = "" a nulla.
Nel mio codice, dunque, c assumeva valore "" e lo utilizzava normalmente, e quindi lo memorizzava. Giusto? E per tenere sempre l'inputbox, bastava mettere un if the else

Codice: [Seleziona]
 if c <> "" then
blablabla
endif


Giusto, vero??

Ahh, che cavolata, bastava pensarci un po' su, scusatemi tanto... :-x  :oops:

30
casomai, adesso riprovo..


Comunque, alla fine, ho risolto il problema del "null" ( e così facendo me ne sono accorto di un altro). Semplicemente, mi dimenticavo di fare "$hConn.commit()" prima di chiudere la connessione. In un caso lo mettevo (e andava tutto), in quell'altro no, e infatti mi dava il problema..


Una cosa, dato che ci sono, e poi con sqlite ho finito: cancellare un record.Nell'esempio riportato nella guida, l'id, se non sbaglio, veniva inserito dall'utente cosa alquanto scomoda, ritengo. Se io avessi tutti i "dati dei record"(ovvero, ho una tabella, con 2 "colonne", e io faccio visualizzare tutti i dati di una di queste colonne), posso, facendo fare doppio click su uno di essi (contenuti in una listbox) farglielo cancellare, facendogli trovare l'id da "solo", senza che l'utente lo inserisca lui manualmente?No so se mi sono spiegato..
Perché, mi basta solo quello per finire la parte del mio programma che lavora in locale.. :-D


p.s.:qualcuno sa come lavorare con i comandi per l'ftp???? :-D

Pagine: 1 [2] 3 4