Copiare Nx Record di una Maschera continua in una sola casella di test...

venerdì 24 gennaio 2014 - 15.34
Tag Elenco Tags  Access (.mdb)

leoobelix Profilo | Newbie

salve a tutti , altro piccolo problema:


Sottomaschera visualizzazione Continua


ID --- IDordine --- Prodotto ---Quantita--- Prezzo--- Peso --- stock ....etc...
1 ---- 125 ---------Blac----------- 1--------- --25--------160------5--------
2 ---- 125 ---------whit----------- 1--------- --30--------161------10--------
3 ---- 125 ---------whit----------- 1--------- --30--------161------10--------

io devo copiare tutti questi record in una casella di testo non associata

attualmente gia eseguo questa operazione con un "dopo aggiornamento su prodotto"

comando :

Me.notemixorder = notemixorder & "n" & Me.Quantita.Value & " " & Prodotto & "stock " & Stock & vbCrLf

questo va bene , ma si lavora sempre sul singolo record . vorrei capire come fare
in fase di uscita della sottomaschera per fare il "ciclo" di questa istruzione per tutti i record
appena caricati , Grazie ancora !

renarig Profilo | Expert

ma la casella di testo deve essere nella sottomaschera oppure nella maschera principale ?

leoobelix Profilo | Newbie

attualmente la casella di testo (non associata) sta nella sottomaschera ( notemixorder)
in quanto comunque se bisogna editare qualcosa manualmente deve essere
disponibile . e poi con il comando (su evento chiusura sottomaschera )
Forms![tabella oridini]![note] = Me.notemixorder
mi passo questo campo nella maschera principale .


vorrei evitare di dare nella sottomaschera il comando uno x uno sui record
ogni tanto qui qualcuno si dimentica o solta un record .

grazi ancora .


renarig Profilo | Expert

Crea un nuovo DB
Crea Nuova tabelle di nome "Tabe"
campi:
- Id -- Contatore -- Key
- Desr - Testo
- Quan - Numerico
- Note - Testo
Inserisci dei dati

Crea una nuova maschera NON associata di nome "Mas1"

inserisci in Mas1 una casella di testo NON ASSOCIATA di
nome "txtRes" di dimensioni adeguate a contenere quello che vuoi

Crea una nuova maschera di Nome "SM2"
Origine Record - Tabe
Visualizzazione predefinita - Maschere continue

Crea in SM2 4 caselle di testo
- Origine Controllo - Id ------ Nome elemento - txtId
- Origine Controllo - Desr ----- Nome elemento - txtDesr
- Origine Controllo - Quan ----- Nome elemento - txtQuan
- Origine Controllo - Note ----- Nome elemento - txtNote

Riprendi in mano Mas1 e gli inserisci come
sottomaschera SM2 ( chiamandola SSM2 )

Sull'eventi "Su Uscita" di SSM2 ci metti questo codice:
Private Sub SSM2_Exit(Cancel As Integer) Dim RSx As DAO.Recordset Set RSx = Me.SSM2.Form.RecordsetClone Dim StrTxt As String ' la stringa che copieremo mella nostra casella di testo StrTxt = "" RSx.MoveFirst Do Until RSx.EOF StrTxt = StrTxt & "Id " StrTxt = StrTxt & RSx.Fields("Id") StrTxt = StrTxt & " Descrizione " StrTxt = StrTxt & RSx.Fields("Desr") StrTxt = StrTxt & " Quantita " StrTxt = StrTxt & RSx.Fields("Quan") StrTxt = StrTxt & " Note " StrTxt = StrTxt & RSx.Fields("Note") StrTxt = StrTxt & vbCrLf RSx.MoveNext Loop Me.txtRes.Value = StrTxt End Sub

Penso che bisognera mettere a posto l'allineamento
fra i vari campi nella casella di testo txtRes


Facci sapere

leoobelix Profilo | Newbie

come sempre perfetto .

una curiosita

su recordset

ho questo tipo di problema :

inserimento cliente : modificato con il tuo aiuto (split file)

vado ad eseguire nella stessa tabella se e' presente un ordine con lo stesso numero .
(posto codice ... Funziona perfettament ) passo alla fase 2

Set rs = DBEngine(0)(0).OpenRecordset("SELECT COUNT(*) AS [Ordine Numero] FROM [Tabella Oridini] WHERE [Ordine Numero]= '" & Me.Ordine_Numero.Value & "'")
If rs.Fields("ordine numero") > 0 Then
MsgBox "ATTENTIONE " & [Ordine Numero] & " GIA'REGISTRATO", vbCritical, "Attenzione !"


End If
rs.Close
Set rs = Nothing

'fase 2

in questo database ho trovato una vecchia tabella mai entrata in funzione per la blacklist
dove mettere i clienti cattivi . ho pensato di riformulare il codice e aggiungerlo al momento dello split in modo
da avere anche un controllo sulla black list .

Set dbs1 = CurrentDb
Set rs1 = DBEngine(0)(0).OpenRecordset("SELECT COUNT(*) AS [Nomeclient] FROM [Blacklist] WHERE [Nomeclient]= '" & Me.Nome_client.value & "'")
If rs1.Fields("Nomeclient") > 0 Then
MsgBox "ATTENTIONE QUESTO CLIENTE " & [Nome_client] & " E' IN BLACK LIST", vbCritical, "Attenzione !"
Me.txtdispute.Visible = True
Me.txtdispute.BackColor = 255
Me.txtdispute.Value = "BLACKLIST"
End If
rs1.Close
Set rs1 = Nothing

risultato che non mi sente nulla .

ma se uso questo stesso codice sulla casella di testo nome cliente , funziona
come se non mi sentisse il valore ,mentre sente solo quello del numero ordine ....


ciao e grazie ancora .

renarig Profilo | Expert

Ho dimenticato di chiudere il RecordSet ( che bisogna sempre chiudere )
' ............ Loop RSx.Close Set RSx = Nothing Me.txtRes.Value = StrTxt ' .............


>una curiosita
> ..........
Questa è un' altra domanda , apri un altro tread, è gratis
diversamente si fa confusione nel forum

.

leoobelix Profilo | Newbie

ok
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5