Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Macro Access

  1. #1

    Macro Access

    Ciao!
    Il mio problema riguarda le macro sotto Access 2000.
    Ho un database con due tabelle Fornitori e Prodotti (è solo un esempio).
    Supponiamo che Fornitori abbia solo l'attributo IDFornitore, mentre Prodotti abbia come attributi IDProdotto, NomeProdotto,IDFornitore.
    Ora io costruisco una maschera sulla tabella Prodotti inserendo solo come campi IDProdotto e NomeProdotto e poi aggiungo un bottone che al click va a inserirmi un record nella tabella Prodotti e contemporaneamente va nella tabella Fornitori, prende il valore del primo record di IDFornitore ( che avrà un certo valore) e me lo inserisce nell'IDFornitore della tabella Prodotti, uguale per tutti i record.
    Per fare questo sono andata a modificare il codice della funzione Private Sub Comando81_Click associata al bottone da me costruito inserendo il seguente codice:

    Set opened = CurrentDb
    Set Tb1 = opened.OpenRecordset("Prodotti")
    Set Tb2 = opened.OpenRecordset("Fornitori")

    Tb1.MoveFirst
    Tb2.MoveFirst

    Tb1.Edit

    Tb1!IDFornitore= Tb2!IDFornitore

    Tb1.Update

    Ora il mio problema è che con questo codice funziona tutto ma solo per il primo record della tabella Prodotti.
    Dalla maschera quando clicco sulle frecce di scorrimento per inserire il secondo record e poi faccio click sul bottone, mi inserisce i valori inseriti nei campi della maschera ma non mi va a inserire il valore di IDFornitore in automatico come succedeva col primo record.
    Cosa devo aggiungere la codice perchè funzioni per tutti i record?

  2. #2
    Utente di HTML.it L'avatar di fiscet
    Registrato dal
    Jul 2001
    residenza
    Oderzo TV
    Messaggi
    207

    ... forse

    Mi sembra di aver capito che tu sfogli un record alla volta con degli appositi pulsanti. Poi hai un pulsante che ti richiama la proceduraqui sotto. Giusto?
    ***********************************
    Set opened = CurrentDb
    Set Tb1 = opened.OpenRecordset("Prodotti")
    Set Tb2 = opened.OpenRecordset("Fornitori")

    Tb1.MoveFirst
    Tb2.MoveFirst

    Tb1.Edit

    Tb1!IDFornitore= Tb2!IDFornitore

    Tb1.Update
    ************************************

    Mi sembra di capire che apri entrambe i record e ti posizioni sempre al primo ...

    Non ho ben capito qual'è lo scopo di quello che stai facendo ... se ti spieghi di più magari ti posso dare suggerimenti migliori ...
    Christian Zanchetta
    Fiscet.it
    Ecommerce e Web Marketing

  3. #3
    Io ho la maschera associata alla tabella Prodotti e i pulsanti per passare da un record a un altro
    sono quelli di spostamento tipici delle maschere.
    Poi sulla maschera ho le caselle di testo IDProdotto e NomeProdotto in cui un utente inserirà certi valori
    a suo piacimento e poi cliccando sul bottone da me aggiunto, in automatico parte la la procedura,
    come dicevi tu, che inserisce (senza che l'utente debba veda) il valore di IDFornitori in Prodotti.

    Non è che mi posiziono sempre al primo: la procedura funziona solo per il primo record (ossia mi inserisce in
    automatico IDFornitore in Prodotti ma solo per il primo record, non per i successivi.

    Cioè: Tabella Prodotti: Record 1 IdProdotto=2 NomeProdotto=Trapano IDFornitori= 3A4f
    Record 2 IdProdotto=5 NomeProdotto=cacciavite IDFornitori= 0 e invece mi dovrebbe mettere 3A4f (perchè io voglio che sia uguale per tutti i record).
    Scusami se mi esprimo male ma non sono espertissimo di queste cose, ho iniziato da poco....se puoi aiutarmi te ne sarei grato....Grazie

  4. #4
    Utente di HTML.it L'avatar di fiscet
    Registrato dal
    Jul 2001
    residenza
    Oderzo TV
    Messaggi
    207

    ... ultima domanda ...

    ... un prodotto ha la possibilità di avere solo un fornitore o nessun fornitore?


    P.S.
    tb1.movefirst e tb2.movefirst ti posiziona "il cursore" al primo e da lì non si muove se non gli dici tb1.movenext.

    Cmq se vuoi mandami pure il db che ci do un occhio
    Christian Zanchetta
    Fiscet.it
    Ecommerce e Web Marketing

  5. #5

    macro access

    Un prodotto deve avere sempre quell'IDFornitore che io ho inserito in Fornitori, sempre e solo quello per tutti i record: il fatto è che inserendo i dati attraverso la maschera, per il secondo record la procedura non viene eseguita dal bottone e non capisco perchè.

    PS: la presenza o meno dei movefirst non mi cambia nulla

  6. #6
    Utente di HTML.it L'avatar di fiscet
    Registrato dal
    Jul 2001
    residenza
    Oderzo TV
    Messaggi
    207

    ....

    cambia o meno la presenza del movenext ... ma non gestito così.
    Se ogni record deve avere lo stesso IDFornitore ... l'attributo IDFornitore (oso dire) non è necessario.
    Perchè non lo imposti di default come valore predefinito?
    Christian Zanchetta
    Fiscet.it
    Ecommerce e Web Marketing

  7. #7

    ....

    Hai ragionissimo! Io avevo già provato a impostarlo come valore di defaultecosì non mi dava problemi solo che in questo modo l'utente che userà l'interfaccia che sto realizzando rimarrebbe vincolato a non cambiarlo mai! Invece io vorrei che se per esempio per 100 record il valore di IDFornitori è 1A3Fs5 e poi per altri 100 sia g1g3bdH l'utente possa andare in Fornitori e cambiare il valore appena necessario per poi continuare l'insermento in automatico.
    Non so se mi sono spiegato! Spero di sì.

    In quanto al db vorrei mandartelo ma non so come fare...

    Se hai altri dubbi fammi tranquillamente sapere e grazie per l'interesamento!

    Avevo pensato anch'io al MoveNext inserito dopo l'Update, solo che penso che ci voglia dell'altro in quanto mi dava errore essendo io poco esperto....

  8. #8
    Utente di HTML.it L'avatar di fiscet
    Registrato dal
    Jul 2001
    residenza
    Oderzo TV
    Messaggi
    207

    ... beh se mi dai la tua mail

    ... provo a mandarti un es. o più su come farei.
    Christian Zanchetta
    Fiscet.it
    Ecommerce e Web Marketing

  9. #9

    Eccolo!

    raffaele13_o@libero.it

    Grazie ancora! Aspetto tue notizie.
    Ciao

  10. #10

    Risolto!!

    Ciao Fiscet!
    Sono riuscito a risolvere!

    Ti invio il codice che andava aggiunto:

    Set Tb1 = opened.OpenRecordset("Select * from Prodotti where IdProdotto = " & IDProdotto.Value)


    Grazie comunque per l'interessamento!
    E alla prossima che ci sarà presto
    Ciao ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.