Nuovo Arrivato

mercoledì 29 settembre 2004 - 19.42

Kuma11 Profilo | Newbie

Ciao a tutti come prima cosa volevo salutarvi dato ce da ora che vi ho trovati vi farò visita di frequente. Comincio subito col primo quesito: Sto creando un database in access e voglio che il campo in una tabella prenda un determinato valore in base al button che l'utente selezionerà. Specifico: la maschera dà la possiblità di scegliere tra due pulsanti che aprono un'altra maschera, la stessa per entrambi i tasti, solo che in questa c'è un campo che prenderà il nome del tasto premuto, come posso fare con visual basic? grazie e a presto

trinity Profilo | Guru

Spiegati meglio, il nome della maschera(form) deve prendere il nome del pulsante e questo deve essere salvato in una tabella di access? Quale visual basic utilizzi?

Ciao
Fabio

Kuma11 Profilo | Newbie

Non so quale sia la versione di visual basic, sto lavorando con AccessXP e essendo abituata a programmare con VisualBasic6 trovo alcune differenze. Forse ho esposto male il problema, lo riformulo con un esempio: Ho una maschera con due pulsanti, pulsante1 e pulsante2. Premendo questi tasti si apre un'altra maschera relativa a una tabella che, tra i vari campi ne contiene uno chiamato NomePulsante che prenderà valore pulsante1(se precedentemente è stato premuto il pulsante1) o pulsante2(se precedentemene, nella maschera precedente, è stato premuto il pulsante2). In sostanza, come faccio a portare un valore da una maschera a un'altra? Per ora grazie per l'attenzione, sicuramente sarà una fesseria ma ho tanti problemini da risolvere e sono un pò fusa. Ciao

Kuma11 Profilo | Newbie

Ora che ci sono ne approfitto per porre altri due quesiti:
1) Devo sommare una certa categoria di dati presi da una query, e portare il risultato in una maschera. Ho provato a usare la funzione DSum, ma non riesco a impostare due criteri come ad esempio, Somma("Prezzo", "QueryDov'è il Prezzo","Dato1=mioDato AND Dato2=True"), Dato2 è di tipo Si/No. Ci sarà sicuramente un modo per farlo...

2)L'oggetto ADODB è uguale all'oggetto ADODC?

3)Non prevista:se avessi qualche alta richiesta devo aprire un nuovo Thread?

Grazie ancora

trinity Profilo | Guru

Se il genere è diverso si è meglio che apri un nuovo thread..
Per quanto riguarda la differenza tra adodb e adodc non ti posso di nulla per quest'ultimo non l'ho mai utilizzato, solo che se passi
a vb net ti consiglio di utilizzare l'ado net che è potente..potresti utilizzare la sintassi sql e precisamente il parametro Sum, questo ti permette di sommare il valore dei campi di un database che gli specifici..

Ciao

Kuma11 Profilo | Newbie

ADODB e ADODC sono molto simili solo che in ADODB non riesco a capire quando trova il record che gli dico di cercare tramite la stringa sql e questo mi disturba. In ADODC impostavo il RECODSOURCE con un'istruzione sql poi tramite il comando RECORDSET.RECORDCOUNT riuscivo a vedere se aveva trovato il record che specificavo nella RECORDSOURCE. Questo mi serve perchè se trova ciò che cerco, verranno svolte certe azioni, altrimenti ne verranno eseguite altre. Potresti darmi qualche consiglio sull'utilizza di ADODB? Grazie

trinity Profilo | Guru

Il discorso è che quando per esempio te utilizzi una query sql del tipo SELECT, ovviamente stai ricercando uno o + record e successivamente farai classicamete un ciclo while per caricare gli eventuali record trovai o in rari casi un'istruzione if..end if..cmq in entrambi i casi se il recordset è vuoto significa che la query non ha trovato record e di conseguenza il ciclo non verrà terminato...

Ciao

ps ti serve qualche sempio di codice adodb?

Kuma11 Profilo | Newbie

Si mi serve eccome!!!!!!! Ti ringazio infinitamente. Ciao

trinity Profilo | Guru

Prima di tutto devi aggiungere al progetto il file adodb.dll

dopo segui queste istruzioni:

dichiarazione di connessione al database:

Public db As New ADODB.Connection()
db.ConnectionString = "DSN=nome_database" ''ho usato il dsn di sistema perchè utilizzo come database mysql
db.Open()

dichiaro un tabella

Public nome_tabella As New ADODB.Recordset()

faccio una ricerca nella tabella e apro un ciclo while:

Nome_tabella.Open("SELECT * FROM nome_tabella", db, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic)

While nome_tabella.Eof=false
.......
End While
nome_tabella.Close()

Spero che ti possa essere di aiuto

Ciao
Fabio

Kuma11 Profilo | Newbie

Ho provato a interpretare il codice che mi hai dato sull'uso di ADODB, senza gran sucesso.
Come faccio a importare adodb.dll? Devo farlo via codice o modificando qualche impostazione di Access?
Sono riuscita ad aprire una connessione per effettuare una ricerca ma non so come aprire la connessione a una "Tabella". Accetto suggerimenti.
Grazie infinite...

trinity Profilo | Guru

Per importarti la dll ADODB devi procedere in questo modo:

1) cliccare sulla voce PROGETTO della barra degli strumenti
2) cliccare sulla voce AGGIUNGI RIFERIMENTO
3) ti apparirà una finestra chiamata: "AGGIUNGI RIFERIMENTO" con delle sottocartelle chimate: "NET", "COM", "PROGETTI".
4) nella prima cartella ossia "NET" troverai il riferimento alla dll ADODB, gli selezioni e poi clicchi sul pulsante SELZIONA e successivamente sul pulsante OK

a questo punto avrai importato nel tuo progetto la dll in questione e potrai utilizzare il codice che ti ho postato il Thread precedente.

Ciao e buona lavoro

Fabio

Kuma11 Profilo | Newbie

Per quanto riguarda l'importazione delle librerie, in VBA non è possibile, non nel modo in cui hai descritto, comunque non importa son riuscita a interpretarlo e funziona, ora ho un altro problema che riguarda l' UPDATE.
Vorrei modificare un campo(Campo1) in un record esistente di una tabella(Tabella). Ho provato a usare il seguente codice:

Private Sub SettaCampo()

Dim connc As ADODB.Command
Set connc = New ADODB.Command

sql_report = "select * from Tabella where Campo2= " & MioCampo2 & ";"

connc.ActiveConnection = CurrentProject.Connection
connc.CommandText = sql_report
connc.CommandType = adCmdText
connc.Execute

Dim repset As ADODB.Recordset
Set repset = New ADODB.Recordset
repset.Open connc


repset.Fields("Campo1") = MioCampo1 'SI BLOCCA QUI
repset.Update


End Sub

Ciò mi porta all'Errore di runtime n.'3251', ossia:
"Il Set di Record Corrente non supporta l'aggiornamento. Potrebbe trattarsi di una limitazione del provider
o del tipo di blocco selezionato".
Sto lavorando in Access2002.
C'è uno sbaglio nel codice? Come posso modificare un campo in un record esistente di una tabella come esposto sopra?
Grazie

trinity Profilo | Guru

Potresti utilizzare un query sql di aggiornamento..

sql="UPDATE nome_tabella SET nome_campo='"& valore &"' WHERE campo_chiave='"& valore &"'

se non inserisci la where l'update di aggiorna tutti i record, mentre se lo vincoli con la clausola where dicendi di aggiornare solo il campo x dove(where) codice=......

ti aggiorna solo il record che ti serve..

Ciao
Fabio
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5