Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Eseguire da codice una query con parametro

    Buongiorno, sono nuovo del forum e da poco mi sto cimentando nel linguaggio Visual Basic 2005.
    In precedenza ho lavorato sempre con VBA esattamente con Access 97.
    Mi permetto di scrivere in quanto il passaggio a questo nuovo ambiente mi sembra molto traumatico.

    Volevo porre un piccolo quesito al quale non sto riuscendo a dare una spiegazione, ho aggiunto in un TableAdapter una query di selezione e accodamento alla quale dovrei passare un parametro da codice VB. La connessione avviene su un database Access97, la query è questa
    "INSERT INTO CTAV
    (ID, TAVOLO, CODE, ORDINAZIONE, DA, PRODOTTO, TIPO, PREZZO, DATA, ORA, RIF, PAG, S, PAGB, INDICAZIONI, CONDIMENTI)
    SELECT ID, TAVOLO, CODE, ORDINAZIONE, DA, PRODOTTO, TIPO, PREZZO, DATA, ORA, RIF, PAG, S, PAGB, INDICAZIONI, CONDIMENTI
    FROM ARV
    WHERE (TAVOLO = ?)" [/COLOR] ,

    le righe di codice con cui speravo di eseguire il tutto sono le seguenti
    "Dim tavolo As Integer
    tavolo = 2

    Me.ARVTableAdapter.ContoTAV(tavolo)"

    e l'errore che mi viene restituito appena scrivo il codice è il seguente

    "Troppi Argomenti per "Public Overridable Overloads Function ContoTAV() as Integer".

    Vi sarei molto grato se poteste chiarirmi le idee in merito.

    Grazie.
    masakele

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Si capisce ben poco da quello che hai scritto. il codice va scritto tra i relativi Tags CODE e /CODE

    codice:
    
    
    se vuoi farti capire.

    Venedo al tuo problema l'errore è dovuto al fatto che la Sub ContoTAV ( se è una Sub) non accetta parametri perchè evidentementi non li hai dichiarati.
    Ad esempio se scrivi:
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            TestSub(1000)
        End Sub
    
        Sub TestSub()
            Dim valore As DateTime = DateTime.Now
        End Sub
    incorri nell'errore che hai sopra citato.

    La sintassi corretta è:

    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            TestSub(1000)
        End Sub
    
        Sub TestSub(ByVal intervallo As Double)
            Dim valore As DateTime = DateTime.Now
            valore = valore - TimeSpan.FromSeconds(intervallo)
        End Sub
    Sbagliare è umano, perseverare è diabolico.

  3. #3
    Ciao, grazie per l'attenzione e scusami, ma non sono pratico. Cerco di spiegarmi meglio, nella scheda Dataset.xsd ho memorizzato nel TableAdapter la query che deve recuperare ed accodare in un 'altra tabella i record delle ordinazioni effettuate al Tavolo numero 1 o 2 o 3 in base a quello che sceglierà l'utente, per cui l'istruzione SQL della query si chiude con "WHERE (TAVOLO = ?)" e spero di essere stato chiaro fino a qui. Adesso io devo passare il numero del tavolo alla query. Il numero viene digitato dall'utente in una TextBox e quindi memorizzato nella variabile "tavolo". All'evento Click di un pulsante dovrebbe essere eseguita la query, per cui ti scrivo il relativo codice

    codice:
     Private Sub Button240_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button240.Click
            Dim tavolo As Integer
            tavolo = Me.TextBox1.Text
            Dim ARVtableadapter As New WindowsApplication1.MiroBaseDBDataSetTableAdapters.ARVTableAdapter
            Me.ARVTableAdapter.ContoTAV(tavolo)
        End Sub
    Grazie.
    masakele

  4. #4
    Ma il metodo ContoTav come lo hai dichiarato?

  5. #5
    ContoTav è la query che ho creato e memorizzato nel TableAdapter, bisogna dichiararla? E come? Tra l'altro ho creato delle query che vanno a modificare alcuni campi in una tabella che attendono sempre il passaggio di alcuni parametri e tutto funziona alla perfezione con lo stesso codice che ho postato qui. Aiutatemi a capire.
    masakele

  6. #6
    Originariamente inviato da masakele
    ContoTav è la query che ho creato e memorizzato nel TableAdapter, bisogna dichiararla? E come? Tra l'altro ho creato delle query che vanno a modificare alcuni campi in una tabella che attendono sempre il passaggio di alcuni parametri e tutto funziona alla perfezione con lo stesso codice che ho postato qui. Aiutatemi a capire.
    Questa è la chiamata ad un metodo, se non ci posti il codice non possiamo dirti che cosa
    non funziona

    codice:
    Me.ARVTableAdapter.ContoTAV(tavolo)

  7. #7
    Potete scaricare dal mio server ftp://151.61.106.214 nome utente avaglio e password CPQwar11 il progetto in visual basic 2005 + il database, la cartella con il database va posizionata nel percorso C:

    Il mio intento era quello di riuscire a selezionare tramite la pressione del tasto "CONTO TAVOLO" i record contenuti nella tabella ARV con il numero di tavolo indicato nella textbox4 e di accodarli nella tabella CTAV.
    La query preposta a questo lavoro è nominata ContoTAV e la potete visualizzare nella scheda MirobaseDBdataset.xsd, facendola funzionare manualmente fa il suo dovere ma dal codice non riesco a passargli il numero del tavolo. Tenete presente che tramite la pressione del tasto "INVIO" viene richiamata la query IND_ORD alla quale viene passato il parametro "indord" e tutto funziona alla perfezione. Scusate la mia ignoranza, ma considerate che ho appena iniziato la conoscenza di questo linguaggio per cui non me ne vogliate. Grazie a tutti.
    masakele

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Questa è l'equivalente query con SQLServer che scrive un testo nellatabella 'MiaTabella' passando alla funzione il parametro 'testo'.

    codice:
     Function WriteTesto(ByVal testo As String) As Boolean
            Dim objConnection As New SqlConnection("server=MioServer;database=MioDb;user=MioUser;password=MiaPassword;Timeout=10")
            Dim objcommand As New SqlCommand
            objcommand.Connection = objConnection
            objcommand.CommandType = CommandType.Text
    
            objcommand.Parameters.AddWithValue("@testo", testo)
            objcommand.Parameters.AddWithValue("@time", DateTime.Now)
            objcommand.CommandText = "INSERT INTO MiaTabella (Question,Time) VALUES (@testo,@time)"
    
            Try
                objConnection.Open()
                Dim esito As Boolean = objcommand.ExecuteNonQuery()
                objConnection.Close()
                Return esito
            Catch ex As Exception
            End Try
        End Function
    Sbagliare è umano, perseverare è diabolico.

  9. #9
    Originariamente inviato da masakele
    Potete scaricare dal mio server ftp://151.61.106.214 nome utente avaglio e password CPQwar11 il progetto in visual basic 2005 + il database, la cartella con il database va posizionata nel percorso C:

    Il mio intento era quello di riuscire a selezionare tramite la pressione del tasto "CONTO TAVOLO" i record contenuti nella tabella ARV con il numero di tavolo indicato nella textbox4 e di accodarli nella tabella CTAV.
    La query preposta a questo lavoro è nominata ContoTAV e la potete visualizzare nella scheda MirobaseDBdataset.xsd, facendola funzionare manualmente fa il suo dovere ma dal codice non riesco a passargli il numero del tavolo. Tenete presente che tramite la pressione del tasto "INVIO" viene richiamata la query IND_ORD alla quale viene passato il parametro "indord" e tutto funziona alla perfezione. Scusate la mia ignoranza, ma considerate che ho appena iniziato la conoscenza di questo linguaggio per cui non me ne vogliate. Grazie a tutti.
    Io non ho mai lavorato creando le stringhe dei comandi dentro file separati, quindi
    non sono molto pratico, però leggendo quello che hai fatto tu, mi pare di capire
    che contoTav sia un datasource, che tra l'altra non ha nemmeno un selectcommand
    ha solo il comando di insert:

    codice:
    <DbSource ConnectionRef="MiroBaseDBConnectionString (MySettings)" DbObjectName="" DbObjectType="Unknown" GenerateShortCommands="True" GeneratorGetMethodName="GetDataBy" GeneratorSourceName="ContoTAV" Modifier="Public" Name="ContoTAV" QueryType="NoData" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="True" UserGetMethodName="GetDataBy" UserSourceName="ContoTAV">
    
    <InsertCommand>
                      <DbCommand CommandType="Text" ModifiedByUser="True">
                        <CommandText>INSERT INTO CTAV
                          (ID, TAVOLO, CODE, ORDINAZIONE, DA, PRODOTTO, TIPO, PREZZO, DATA, ORA, RIF, PAG, S, PAGB, INDICAZIONI, CONDIMENTI)
    SELECT     ID, TAVOLO, CODE, ORDINAZIONE, DA, PRODOTTO, TIPO, PREZZO, DATA, ORA, RIF, PAG, S, PAGB, INDICAZIONI, CONDIMENTI
    FROM         ARV
    WHERE     (TAVOLO = ?)</CommandText>
                        <Parameters>
                        </Parameters>
                      </DbCommand>
                    </InsertCommand>
    ps, rivedendolo forse ho capito, quello che ti manca è dichiarare un parametro per poter fare la insert:

    codice:
    <Parameters>
       <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="NUMERO_TAVOLO" Precision="0" ProviderType="Integer" Scale="0" Size="0" SourceColumn="TAVOLO" SourceColumnNullMapping="False" SourceVersion="Original">
    
    </Parameters>

  10. #10
    Scusami Max Mercury, ma come andrebbe posizionato questo codice nella mia sub? Ti dispiacerebbe farmi un esempio? Ho provato a fare un copia e incolla, ma mi segna molti errori. Forse devo aggiungere qualche riferimento? Non so se hai potuto scaricare la cartella del progetto, nel caso tu l'abbia fatto ti prego di leggere il codice del tasto INVIA che passa un parametro ad un altra query e tutto funziona. Davvero non riesco a capire. Grazie per la collaborazione.
    masakele

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.