Notifications
Clear all

Access 2016

8 Posts
4 Users
0 Reactions
3 Views
Beppeb79
(@beppeb79)
Eminent Member
Joined: 6 months ago
Posts: 30
Topic starter  

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


   
Quote
robertocr
(@robertocr)
Estimable Member
Joined: 6 months ago
Posts: 99
 

qualche cosa ne so anche se da tempo ho mosso tutto su libreoffice


   
ReplyQuote
Beppeb79
(@beppeb79)
Eminent Member
Joined: 6 months ago
Posts: 30
Topic starter  

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

 


   
ReplyQuote
fringui
(@fringui)
Reputable Member
Joined: 6 months ago
Posts: 270
 

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 😉


   
ReplyQuote
Beppeb79
(@beppeb79)
Eminent Member
Joined: 6 months ago
Posts: 30
Topic starter  

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)


   
ReplyQuote
Beppeb79
(@beppeb79)
Eminent Member
Joined: 6 months ago
Posts: 30
Topic starter  

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


   
ReplyQuote
zizio82
(@zizio82)
Member Admin
Joined: 7 months ago
Posts: 602
 

@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!)


   
ReplyQuote
Beppeb79
(@beppeb79)
Eminent Member
Joined: 6 months ago
Posts: 30
Topic starter  

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.


   
ReplyQuote