Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: [VB] Ancora errore!!

  1. #1

    [VB] Ancora errore!!

    Ciao a tutti,

    perchè anche cosi mi dà errore "nessun Record Corrente"

    codice:
    Option Explicit
    Public db As Database
    Public rs As Recordset
    
    
    
    
    Private Sub Form_Load()
    
    Set db = OpenDatabase(App.Path & "\database.mdb")
    Set rs = db.OpenRecordset("select * from [Anagrafico Incarico] where ID like '*" & Replace(idText, "'", "''") & "*'")
    Text.Text = rs!Nome
    
    rs.Close
    End Sub
    ma il database è pieno di record!!!

    Premetto che idText arriva perfettamente

    Grazie mille

    Meglio tacere e dare l'impressione di essere scemo, che aprire la bocca e togliere ogni dubbio



    ...........

  2. #2
    Ho provato il tuo codice ma mi da errore anche nella dichiarazione
    del database
    "Public db As Database"


    CMQ prova ad utilizzare ADO (menu PROGETTO\RIFERIMENTI)
    aggiungi "Microsoft ActiveX Data Object library"
    Poi creati un DSN di sistema (pannello di controllo\impostazioni\)ecc...
    che punta al file access .mdb
    poi da VB inserisci questo codice:
    codice:
    Dim i as Integer
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set cn = New ADODB.Connection
    cn.ConnectionString = "Provider=MSDASQL; Data Source=MIO_DSN; Database=MIO_DSN; User Id=; Password=; Security Info=True"
    cn.Open
    Set rs = cn.Execute("SELECT * FROM  MIA_TABELLA")
    rs.MoveFirst
    i=0                
    While Not rs.EOF
        Mia_ListBox.AddItem rs.Fields(i).value
        i=i+1
        rs.MoveNext
    Wend
    Modificando la riga evidenziata dovresti riuscire ad adattarlo
    alle tue esigenze

  3. #3
    ....non posso cambiare tutto propio adesso....

    guarda con questo codice io effettuo la ricerca solo che mi compare sempre il primo record!!!

    codice:
    Option Explicit
    Public db As Database
    Public rs As Recordset
    
    
    
    
    
    
    Private Sub Form_Load()
    On Error GoTo handle
    
    Dim idText As String
    Set db = OpenDatabase(App.Path & "\database.mdb")
    Set rs = db.OpenRecordset("select * from [Anagrafico Incarico] where ID AND '*" & Replace(idText, "'", "''") & "*'")
    
    Nome = (rs.Fields("Nome"))
    Cognome = (rs.Fields("Cognome"))
    
    rs.Close
    
    handle:
    Select Case Err.Number
    Case 3021
    MsgBox "Non esiste nessun Record "
    End Select
    End Sub
    questi due campi vengono riempiti sempre con il primo record e non capisco perchè??

    Nome = (rs.Fields("Nome"))
    Cognome = (rs.Fields("Cognome"))




    Meglio tacere e dare l'impressione di essere scemo, che aprire la bocca e togliere ogni dubbio



    ...........

  4. #4
    Ho fatto anche un'altra prova ma qui mi da sempre l'ultimo

    codice:
    Private Sub Form_Load()
    Dim idText As String
    Dim sqlstring As String
    Dim Db As Database
    Dim Rs As Recordset
    
    If idText <> "0" Then
    sqlstring = "select * from [Anagrafico Incarico] where ID like '*" & Replace(idText, "'", "''") & "*'"  'la funzione replace per non avere errori se inserisci apici nella stringa di ricerca
    Set Db = OpenDatabase("C:\Progetto Immobiliare\database.mdb")
    Set Rs = Db.OpenRecordset(sqlstring)
    Set Data1.Recordset = Rs
    If Not Data1.Recordset.EOF Then
    Do While Not Data1.Recordset.EOF
    Nome = (Data1.Recordset.Fields("ID"))
    Data1.Recordset.MoveNext
    Loop
    Else
    MsgBox "Nessun record"
    End If
    End If
    End Sub
    Meglio tacere e dare l'impressione di essere scemo, che aprire la bocca e togliere ogni dubbio



    ...........

  5. #5
    e grazie al cav**o

    scusa!!! ma se tu utilizzi solo 2 variabili
    ES:
    1)nome
    2)cognome

    e cicli fino alla fine del RECORDSET

    è normale che alla fine le variabili conterranno
    il valore dell'ultimo record!!!

    devi utilizzare un'array per ogni campo della tabella

    così nome[0] conterrà il primo valore del campo nome
    e nome[n] conterrà l'ultimo valore del campo nome.
    codice:
    dim ID[200] as string '<-- max 200 stringhe
    dim NOME[200] as string
    dim i as integer
    i=0
    Data1.Recordset.MoveFirst
    Do While Not Data1.Recordset.EOF
        ID[i] = (Data1.Recordset.Fields("ID"))
        NOME[i] =  (Data1.Recordset.Fields("NOME"))
        i=i+1
        Data1.Recordset.MoveNext
    Loop
    prova così

  6. #6
    :quote:

    ovviamente sostituisci le parentesi quadre con le parentesi tonde

    P.S. troppo C fa male :gren:

  7. #7
    Non riesco ad inserire il tuo codice mi faresti vedere come (e soprattuto a quale ti riferisci)

    Grazie mille

    Meglio tacere e dare l'impressione di essere scemo, che aprire la bocca e togliere ogni dubbio



    ...........

  8. #8
    Meglio di cosi non riesco

    codice:
    Private Sub Form_Load()
    Dim idText As String
    Dim sqlstring As String
    Dim Db As Database
    Dim Rs As Recordset
    
    If idText <> "0" Then
    sqlstring = "select * from [Anagrafico Incarico] where ID like '*" & Replace(idText, "'", "''") & "*'"
    Set Db = OpenDatabase("C:\Progetto Immobiliare\database.mdb")
    Set Rs = Db.OpenRecordset(sqlstring)
    
    
    
    Nome = (Rs!Nome)
    
    
    
    End If
    End Sub
    Meglio tacere e dare l'impressione di essere scemo, che aprire la bocca e togliere ogni dubbio



    ...........

  9. #9
    codice:
    Private Sub Form_Load()
        Dim ID(1000) as String   'o long se è numerico, primo campo 
        Dim NOME(1000) as String    'secondo campo della tabella 
        'Inserisci un array per ogni campo della tua tabella
        Dim i as long
        Dim idText As String
        Dim sqlstring As String
        Dim Db As Database
        Dim Rs As Recordset
        i=0 
        If idText <> "0" Then
            sqlstring = "SELECT * FROM [Anagrafico Incarico] WHERE ID    like '*" & Replace(idText, "'", "''") & "*'"  
            Set Db = OpenDatabase("C:\Progetto Immobiliare\database.mdb")
            Set Rs = Db.OpenRecordset(sqlstring)
            Set Data1.Recordset = Rs
            Data1.Recordset.MoveFirst
            If Not Data1.Recordset.EOF Then
                Do While Not Data1.Recordset.EOF
                    ID(i) = (Data1.Recordset.Fields("ID"))
                    NOME(i) = (Data1.Recordset.Fields("NOME"))
                    Data1.Recordset.MoveNext
                Loop
            Else
                MsgBox "Nessun record"
            End If
        End If
    End Sub
    ora se per esempio vuoi visualizzare tutti i record estratti dalla
    query

    scrivi:
    codice:
    for(i=0 to uBound(ID)
        lisBOX1.AddItem ID(i)      '<-- inserisci 2 listBOX
        listBOX2.AddItem NOME(i)
    Next i
    ...ID(0) conterrà il valore del campo ID del primo record ESTRATTO dalla query, ID(1) il secondo ecc...

  10. #10
    !!!OPS!!!

    Mi sono dimenticato di incrementare i

    inserisci i=i+1
    prima di questa riga di codice:

    i=i+1
    Data1.Recordset.MoveNext

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 © 2024 vBulletin Solutions, Inc. All rights reserved.