strumento per non immettere record doppi

  • Creatore Discussione Creatore Discussione andry80
  • Data di inizio Data di inizio

andry80

Nuovo Utente
12 Ott 2007
3
0
0
qualcuno sa come creare una maschera (ad esempio un anagrafica) in cui nel momento in cui inserisco un record se è già presente nella tabella me lo mostra anzichè aggiungerne uno nuovo? un po come fanno i motori di ricerca che se cominci ad inserire un termine già utilizzato ti propongono quello che hai già scritto; la maschera mi dovrebbe riproporre il record
 
Puoi usare l'istruzione Like sfruttando opportunamente l'evento Change di un TextBox e scaricare i dati in una ListBox

L'esempio che segue cerca i dati nella colonna Descrizione della Tabella Prodotti e dimensiona automaticamente la ListBox per un max di 25 righe


Private Sub Text1_Change()
If Flag = "S" Then
If Text1 = "" Then
List1.Top = 9000 'nascondo la ListBox
Else
TX1 = "*" & Trim(Text1) & "*"
Data1.RecordSource = "Select * From Prodotti Where [Descrizione] Like '" + TX1 + "' Order By [Descrizione]"
Data1.Refresh: List1.Clear: List1.Top = 9000
If Data1.Recordset.RecordCount <> 0 Then
Do While Not Data1.Recordset.EOF
List1.AddItem Data1.Recordset(0)
Data1.Recordset.MoveNext
Loop
If List1.ListCount = 1 Then
List1.Height = 450 'mostra solo 1 elemento
Else
Z1 = List1.ListCount: If Z1 > 25 Then Z1 = 25
List1.Height = 255 + (Z1 * 195)
If List1.Height > 6300 Then List1.Height = 6300
End If
List1.Top = 1140: List1.ZOrder 0
End If
End If
End If
End Sub

Private Sub List1_GotFocus()
List1.Selected(0) = True 'selezionato il primo elemento
End Sub
 
scusa ma non sono molto esperto quel codicelo devo copiare sul visual basic di access? come devo fare devo fare una maschera nuova? p.s. uso access 2003
 
scusa ma non sono molto esperto quel codicelo devo copiare sul visual basic di access? come devo fare devo fare una maschera nuova? p.s. uso access 2003

Mi spiace ma io uso Access quasi unicamente per ricovero dati ma, per il tipo di ricerca che devi fare, una piccola maschera di input potrebbe essere utile. Nella maschera principale potresti mettere un pulsante "Nuovo" che aprirebbe la maschera di input e su quella fare la ricerca.

Ho fatto qualche prova e vedo che attraverso i "moduli" è possibile inserire codice allo stesso modo di Visual Basic. Ho fatto una maschera con i campi Codice e Descrizione; poi gestendo l'evento "su modifica" nelle proprietà evento del campo di testo "Codice" (nel mio esempio Text1) vedo che viene richiesta una "routine evento" e facendo click sul tasto a destra (...) si apre il modulo VB e, guarda caso, viene proposta proprio la routine:

Private Sub Text1_Change()

End Sub


Da qui in avanti, però, devi fare da solo perché come ho detto non conosco bene la programmazione di Access (diciamo che non mi piace, ok?) e, comunque, mi scuso perché non avevo fatto caso al fatto che lavoravi in ACCESS.

Porta pazienza...

PS: A completamento del codice che ti ho proposto va detto che se il numero degli elementi listati è uno solo (" If List1.ListCount = 1 Then ") è possibile attivare una routine di lettura del record e visualizzare i dati in modo automatico.

Saluti.
 
ok non mi intendo molto di linguaggio basic ma credo che dovro sostituire i nome al interno del codice che mi hai scritto ti spiacerebbe riscriverlo con "nome campo" o "nome tabella"... nei punti del codice in cui devo inserirle
 
ok non mi intendo molto di linguaggio basic ma credo che dovro sostituire i nome al interno del codice che mi hai scritto ti spiacerebbe riscriverlo con "nome campo" o "nome tabella"... nei punti del codice in cui devo inserirle

Beh, al posto di Text1 metti il nome del campo generato nella maschera... oppure cambi nome al campo e lo chiami Text1.

Flag è una variabile. In routine Form_Load (caricamento iniziale) va settata a "S".
TX1 è anch'essa una variabile.
List1 in Acces mi pare si chiami Elenco1
Ovviamente dovrai gestire in maniera appropriata il recordset.

Non dovrebbe essere difficilissimo...

Ciao.

Ma a che ti serve 'sta roba?
 

Discussioni simili