|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2003
Città: Thessaloniki
Messaggi: 2214
|
Problemi con validation rules in access
Salve raggazzi. Ho un problema con un database che sto creando.
In pratica ci sono questi 2 tables (c'e' ne sono anche altri ma sono questi 2 che mi creano il problema), Checques e Sales che hanno tutti e 2 un field chiamato SalesID. Quello che voglio fare e non permettere al field SalesID in table Checques di avere dei codici che siano maggiori dal SalesID nel table Sales. Per far cio' ho cercato di usare un validation rule simile al seguente: Iif (Forms![Checques]![SalesID] > Forms![Sales]![SalesID],"", "") Il problema che non funziona. L'ho cambiato mettendo di tutto, togliendo di tutto, ma ancora niente. Qualcuno un aiutino? Grazie a tutti |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: May 2003
Città: Saronno
Messaggi: 161
|
Re: Problemi con validation rules in access
Come validation rule devi inserire soltanto il secondo termine di paragone, il primo termine è implicitamente il campo su cui la metti
validation rule: > Forms![Sales]![SalesID] |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2003
Città: Thessaloniki
Messaggi: 2214
|
Grazie dell'aiuto zakzakit
L'ho provato ma ho il seguente messaggio d'errore: Could not find field 'Forms]![Sales]![SalesID'. Il field pero' c'e'. Non capisco! |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: May 2003
Città: Saronno
Messaggi: 161
|
Scusa la distrazione.
Non puoi impostare nella validation rule di un campo di una tabella riferimenti a maschere. Puoi farlo solo se la validation rule si riferisce ad un controllo (per es. di una maschera). |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2003
Città: Thessaloniki
Messaggi: 2214
|
Non lo sapevo! Grazie del chiarimento. Quindi come potrei fare adesso per risolvere il mio problema?
Grazie tante del tuo prezioso aiuto! |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: May 2003
Città: Saronno
Messaggi: 161
|
Per esempio inserendo questo codice, nella proprietà "prima di aggiornare" del campo salesid associato alla tabella cheques in una maschera:
Dim rec As Recordset Dim sqlstring As String Dim maxval sqlstring = "select max(salesID) as maxsalesid from sales" Set rec = CurrentDb().OpenRecordset(sqlstring, dbOpenDynaset) rec.MoveFirst maxval = 0 Do Until rec.EOF Let maxval = rec!maxsalesid Exit Do Loop If SalesID > maxval Then MsgBox "Non puoi farlo" DoCmd.CancelEvent End If |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Feb 2003
Città: Thessaloniki
Messaggi: 2214
|
Ti ringrazio tanto zakzakit. Il tuo aiuto e' stato davvero prezioso.
Provo con l'esempio che mi hai fatto (grazie anche per il codice) Grazie davvero Ciao |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Feb 2003
Città: Thessaloniki
Messaggi: 2214
|
Ho provato zakzakit ma mi da un errore nella linea
Set rec = CurrentDb().OpenRecordset(sqlstring, dbOpenDynaset) Ho provato a fare anche delle ricerche ma niente da fare. Mi sa che mi dovrai aiutare ancora una volta ![]() Scusa per la scocciatura! Ciao |
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: May 2003
Città: Saronno
Messaggi: 161
|
Nessuna scocciatura, figurati.
La riga in questione fa riferimento ad un oggetto "database" che è definito nella libreria DAO (data access objects). Probabilmente la libreria non è presente nei riferimenti. Per inserirla, apri o crea un qualsiasi modulo, e nel menu, clicca su "Strumenti" e poi seleziona "Riferimenti". Cerca "Microsoft DAO 3.6 Object Library" (o qualcosa di simile) e selezionala. A questo punto VBA dovrebbe eseguire la tua riga. (Se sia possibile realizzare un codice simile senza usare i DAO, non te lo so dire. Forse qualche esperto può intervenire). |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2003
Città: Thessaloniki
Messaggi: 2214
|
Ancora una volta grazie zakzakit. Ho fatto come hai detto e quella parte funziona, pero.... c'e' sempre un pero', mi da' un altro messaggio di errore sulla stessa riga: Type mismatch.
Se non erro dovrebbe significare che c'e' un problema con i tipi di dati usati. Il problema e' che non capisco come correggerlo. Ho bisogno ancora una volta di una mano. Grazie del tuo aiuto! |
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: May 2003
Città: Saronno
Messaggi: 161
|
Magari il problema è dato da altre librerie installate che, che so, contengono altre definizioni dell'oggetto RecordSet o del metodo OpenRecordSet o che provocano qualche altro conflitto. Prova a spostare ad una priorità più alta la libreria DAO (con la freccia verso l'alto nella finestra "riferimenti" del menu "strumenti").
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:28.