
Access 2016
C'è qualche anima pia pratico di access versione 2016 in poi che avrebbe voglia di darmi una mano a sistemare un database che però nulla ha a che vedere con le Tesla?
Ricambio con eterna stima
qualche cosa ne so anche se da tempo ho mosso tutto su libreoffice
Prima di tutto grazie, non so se ci sono i pm su questo forum, nel dubbio ho incollato qui il codice:
Brevemente questo codice mi prende dei dati da varie tabelle e mi crea una tabella nuova, teoricamente alcuni dati sono formato si/no e mi aspetterei la checkbox nella tabella in visualizzazione foglio, (o su una ipotetica maschera di inserimento dati collegata) invece mi ritrovo una casella di testo che posso modificare solo per visualizzare -1/0, vero / falso, ma non appunto la checbox.
Se invece la tabella me la creo da me e imposto i campi come si/no mi ritrovo la checkbox; non capisco cosa sbaglio nel codice, tra l'altro non sono molto ferrato, già che mo si crea la tabella è molto tanto per intenderci.
Per questo chiedo aiuto
,Sub CreaTblInterventiDinamica()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim rs As DAO.Recordset
Dim nomeCampo As String
Set db = CurrentDb
' Elimina la tabella se esiste già
On Error Resume Next
db.TableDefs.Delete "tblInterventi"
On Error GoTo 0
' Crea una nuova tabella
Set tdf = db.CreateTableDef("tblInterventi")
' Campi comuni dbdbAutoIncrField era dbLong
tdf.Fields.Append tdf.CreateField("ID_Intervento", dbAutoIncrField) ' Chiave primaria
tdf.Fields.Append tdf.CreateField("Data", dbDate)
tdf.Fields.Append tdf.CreateField("NumeroRoccatrice", dbText, 255)
tdf.Fields.Append tdf.CreateField("SALA", dbLong)
tdf.Fields.Append tdf.CreateField("Linea", dbText, 255)
tdf.Fields.Append tdf.CreateField("Posizione", dbText, 255)
tdf.Fields.Append tdf.CreateField("Operatore", dbText, 255)
tdf.Fields.Append tdf.CreateField("Turno", dbText, 255)
tdf.Fields.Append tdf.CreateField("DifettoSegnalato", dbMemo)
tdf.Fields.Append tdf.CreateField("Note", dbMemo)
' Campi da tblPezziFissi
Set rs = db.OpenRecordset("SELECT NomePezzoF FROM tblPezziFissi")
Do While Not rs.EOF
nomeCampo = rs!NomePezzoF
tdf.Fields.Append tdf.CreateField(nomeCampo, dbBoolean) ' Formato Sì/No
rs.MoveNext
Loop
rs.Close
' Campi da tblPezziRevisionati
Set rs = db.OpenRecordset("SELECT NomePezzo FROM tblPezziRevisionati")
Do While Not rs.EOF
nomeCampo = rs!nomePezzo
tdf.Fields.Append tdf.CreateField(nomeCampo, dbBoolean) ' Formato Sì/No
rs.MoveNext
Loop
rs.Close
' Campi da tblPezziVariabili
Set rs = db.OpenRecordset("SELECT NomePezzoV FROM tblPezziVariabili")
Do While Not rs.EOF
nomeCampo = rs!NomePezzoV
tdf.Fields.Append tdf.CreateField(nomeCampo, dbLong) ' Formato Numero
rs.MoveNext
Loop
rs.Close
' Campi da tblPezziTracciabili
Set rs = db.OpenRecordset("SELECT NomePezzo FROM tblPezziTracciabili")
Do While Not rs.EOF
nomeCampo = rs!nomePezzo
tdf.Fields.Append tdf.CreateField(nomeCampo, dbBoolean) ' NomePezzo (Sì/No)
tdf.Fields.Append tdf.CreateField(nomeCampo & "_ID", dbText, 255) ' IdentificativoPezzo (Testo)
rs.MoveNext
Loop
rs.Close
' Aggiungi la tabella al database
db.TableDefs.Append tdf
' Imposta ID_Intervento come chiave primaria
db.Execute "CREATE INDEX PrimaryKey ON tblInterventi (ID_Intervento) WITH PRIMARY"
MsgBox "Tabella tblInterventi creata con successo!", vbInformation
End Sub
Potrebbe essere solo un problema di visualizzazione, prova a definire nella maschera il campo, con i 2 valori dicendogli che è una checkbox.
Oppure vuoi modificare direttamente da tabella e non da maschera?
Model 3 Performance FSD Griglio Metallizzato 2019
L'età della pietra non è finita perchè sono finite le pietre...
PS: gli errori di ortografia vengono inseriti intenzionalmente, per vedere chi è attento 😉
La checkbox non mi appare proprio come possibilità, la cosa "comica" è che se creo una maschera e creo una checkbox,poi gli dico su che pezzo andare ad agire, salvo e chiudo e in tabella compaiono le checkbox;
Ora io immagino che potrei anche esportare i dati della tabella e ricrearne una a mano e sono quasi sicuro che funzionerebbe, ma è il capire perchè che mi fa impazzire (nel codicr ho anche un errore sulla creazione della chiave primaria che non ho corretto ma non influenza il problema)
alla fine inserirò i dati da una maschera, la sto sistemando adesso come "design", dopo la prima, tutti campi si/no si sono tramutati in checkbox, che va bene, però ripeto, non sapere come e perchè mi rode... e pensare che non sarebbe nemmeno il mio lavoro, io riparo macchinari industriali, ma questa cosa mi serviva e siccome non mi acquistano un gestionale già fatto me lo creo io come ho fatto con altri progetti...
@beppeb79 faccio il triste.... Ho domandato a Copilot cosa ne pensava...
Il problema che stai riscontrando è dovuto al fatto che il formato del campo "Sì/No" non è sufficiente per visualizzare automaticamente una checkbox nella tabella in visualizzazione foglio di Access. Access visualizza i campi di tipo "Sì/No" come caselle di testo con valori -1 (vero) e 0 (falso) di default, a meno che non vengano configurati come checkbox.
Per risolvere questo problema, puoi aggiungere una maschera di inserimento dati personalizzata e impostare i controlli in modo che visualizzino checkbox anziché caselle di testo. Ecco come fare:
1. Crea una nuova maschera in modalità progettazione.
2. Aggiungi i controlli per i tuoi campi di tipo "Sì/No".
3. Imposta le proprietà di questi controlli come checkbox.
Ecco un esempio di come fare questo in VBA:
```vba
Dim frm As Form
Dim ctl As Control
' Crea una nuova maschera
Set frm = CreateForm
' Aggiungi controlli checkbox per i campi Sì/No
Set ctl = CreateControl(frm.Name, acCheckBox, , , , 100, 100)
ctl.ControlSource = "NomeCampoBooleano" ' Nome del campo Sì/No
' Salva la maschera
DoCmd.Save acForm, frm.Name
```
Questo esempio crea una maschera e aggiunge un controllo checkbox per un campo di tipo "Sì/No". Puoi adattarlo per aggiungere controlli per tutti i campi di tipo "Sì/No" nella tua tabella.
Spero che questo ti aiuti a risolvere il problema! Se hai bisogno di ulteriori chiarimenti, sono qui per aiutarti.
Cosa ne pensi della risposta? Te la propongo anche se sembra stupida ma mi sta aiutando parecchio nell'ultimo periodo con vari progetti che ho in piedi (soprattutto su uno è stata fondamentale!)
lo avevo chiesto anche io, sia a copilot che a chatgpt, ma continuano darmi codici che poi non funzionano, perchè se creo una maschera nuova funziona, ma quando la applico al codice che ho incollato si generano poi errori a catena; comunque grazie a tutti per i suggerimenti.
- 29 Forums
- 724 Topics
- 5,214 Posts
- 3 Online
- 588 Members