Ecco il codice!
I campi "tipo ed indirizzo" sono stringhe, mentre "id_ind e id_area" sono integer
PUBLIC SUB btn_salva_Click() 'SALVA I DATI MODIFICATI ED ESCE
DIM ind_area AS Integer
DIM Res_trova_area AS Result
DIM Res_crea_indirizzi AS Result
DIM Res_edit_indirizzi AS Result
INC Application.Busy
WITH connessione
IF Tb_indirizzo.Text <> "" AND Tb_indirizzo.Text <> NULL AND avvio.edit_new = TRUE THEN
avvio.edit_new = FALSE
.Begin
Res_crea_indirizzi = .Create("indirizzi")
Res_crea_indirizzi.Update 'registra il nuovo record vuoto
.Commit
.Begin
Res_trova_area = .Find("aree", "area=&1", cbx_area.Text)
Res_tot_aree.MoveTo(res_trova_area!id_area - 1) 'muove sul record area corrispondente
ind_area = Res_tot_aree!id_area 'preleva l'ID area
Res_edit_indirizzi = .Edit("indirizzi", "id=&1", Tb_id.Text)
Res_edit_indirizzi!tipo = cbx_Tipo.Text
Res_edit_indirizzi!indirizzo = Tb_indirizzo.Text 'fin qui funziona perfettamente
Res_edit_indirizzi!id_ind = Val(Tb_id.Text) ' Res_edit_indirizzi!id_ind rimane NULL
Res_edit_indirizzi!id_area = ind_area ' Res_edit_indirizzi!id_area rimane NULL
Res_edit_indirizzi.Update
.Commit
ELSE
funzioni.mess_no_modif 'messaggio di modifica non eseguita
ENDIF
END WITH
DEC Application.Busy
chiude_maschera 'chiude definitivamente la connessione
CATCH
errore
END
Si noti che tutto questo accade solo con i nuovi records, mentre l'editazione degli esistenti avviene perfettamente.
l' unica cosa che posso dirti ..a nche se non ne sono pienamente sicuro visto che è un bel po che non uso gambas sui datatbase è che mi fa strano che prima aggiungi il record poi fai un .commit e poi ci scrivi dentro
io ho sempre creato il record e poi ci ho scritto dentro direttamente e alla fine ho poi hatto un .update e un .commit
PUBLIC SUB btn_salva_Click() 'SALVA I DATI MODIFICATI ED ESCE
DIM ind_area AS Integer
DIM Res_trova_area AS Result
DIM Res_crea_indirizzi AS Result
DIM Res_edit_indirizzi AS Result
INC Application.Busy
WITH connessione
IF Tb_indirizzo.Text <> "" AND Tb_indirizzo.Text <> NULL AND avvio.edit_new = TRUE THEN
avvio.edit_new = FALSE
.Begin
Res_crea_indirizzi = .Create("indirizzi")
Res_tot_aree.MoveTo(res_trova_area!id_area - 1) 'muove sul record area corrispondente
ind_area = Res_tot_aree!id_area 'preleva l'ID area
Res_crea_indirizzi!tipo = cbx_Tipo.Text
Res_crea_indirizzi!indirizzo = Tb_indirizzo.Text 'fin qui funziona perfettamente
Res_crea_indirizzi!id_ind = Val(Tb_id.Text) ' Res_edit_indirizzi!id_ind rimane NULL
Res_crea_indirizzi!id_area = ind_area ' Res_edit_indirizzi!id_area rimane NULL
Res_crea_indirizzi.Update 'registra il nuovo record vuoto
.Commit
ELSE
funzioni.mess_no_modif() 'messaggio di modifica non eseguita
ENDIF
END WITH
DEC Application.Busy
chiude_maschera() 'chiude definitivamente la connessione
CATCH
errore
END
questa è solo un idea sicuramente il tuo proble è un ' altro
hai provato a vedere con i breakpoint il valore di val(TB_id.Text) ?
Ho installato la 2.5 di gambas, ma ora quando provo a lanciarlo mi dice:
han@han-desktop:~$ gambas2
ERROR: #27: Cannot load component 'gb.desktop': cannot find library file
Come faccio dunque a risolvere questo altro problema?
Si tenga presente però che al comando make, ho ricevuto alla fine il seguente messaggio:
THESE COMPONENTS ARE DISABLED:
- gb.corba
- gb.db.firebird
- gb.desktop
- gb.gtk.svg
- gb.pcre
- gb.pdf
- gb.qt.kde
- gb.qte
- gb.sdl
- gb.sdl.sound
- gb.xml