Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB.NET] Problema con query datatable e firebird

    Ciao a tutti!

    Sto facendo un programmino che comunica con un DB firebird e deve fare delle ricerche dentro il db stesso ma sono bloccato da stamattina e non ho ancora trovato soluzione!

    In pratica devo fare ciò, nel db ci sono i MAC address delle macchine che si connettono salvate dentro ad una tabella, io devo poter connettermi con il mio programma e controllare se il MAC del pc che sto utilizzando è già nel db oppure no, fino ad ora sono arrivato a questo punto:

    codice:
    Dim Query As String = "SELECT * FROM licenze ORDER BY id ASC"
        Public Str_Co As String = "Database=il.mio.ip:c:\OdS_AT.FDB;ServerType=0;username=sysdba;password=masterkey;"
        Dim Co As New FbConnection
    
        ' Mi connetto, creo la tabella, la riempio e controllo se ci sono valori
        Co.ConnectionString = Str_Co
        Dim Adattatore As New FbDataAdapter(Query, Co)
        Dim Tabella As New DataTable
            Adattatore.Fill(Tabella)
            Adattatore.Dispose()
            Tabella.Dispose()
    
        Dim reg_macaddress As String = "8CA98277FEA9"
    
        Dim foundrows() As DataRow = Tabella.Select("macaddress = '" & reg_macaddress & "'")
            If foundrows.Count = 0 Then
                MessageBox.Show("Nessun record")
            ElseIf Tabella.Rows.Count > 0 Then
    
                MessageBox.Show(Tabella.Rows.Count)
            Else
                MessageBox.Show("errore")
    
            End If
    Il problema è che pare non applichi il filtro sulla datatable perchè qualsiasi cosa ci sia scritta nel indirizzo MAC (sia che già esista sia che manchi) mi da sempre la quantità totale delle righe caricate nel DB.

    Aiuto non so più dove sbattere la testa ><

    Grazie in anticipo!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma alla fine perché controlli il numero di rows della Tabella? Semmai lavora con l'oggetto foundrows ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Perchè se mi da zero "teoricamente" è perchè non ha trovato nessun match... ma a quanto pare il problema è a livello di query perchè le conta tutte (quindi come se non le filtrasse...)

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho capito ...

    Se prendiamo questa parte di codice

    codice:
    If foundrows.Count = 0 Then
                MessageBox.Show("Nessun record")
            ElseIf Tabella.Rows.Count > 0 Then
    
                MessageBox.Show(Tabella.Rows.Count)
            Else
                MessageBox.Show("errore")
    
            End If
    quale viene eseguita?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Mi risponde 3 (che è la quantità di righe caricate attualmente nel db) quindi salta a

    codice:
    Tabella.Rows.Count > 0

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ok ... quindi, come ti dicevo, non devi farti mostrare il valore delle righe della tabella ma

    codice:
    If foundrows.Count = 0 Then
         MessageBox.Show("Nessun record")
    Else
         MessageBox.Show(foundrows.Count)
    End If
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,287
    Prova con
    codice:
    Dim foundrows As DataRow()  = blabla
    'e non 
    Dim foundrows() As DataRow = blabla

  8. #8
    Grazie a tutti e due! Ora funziona

    Mi ero incartato su una cavolata... sarà che è da stamattina che smanetto su vb e quando mi son bloccato qui ero ormai fuso...

    Grazie!

    p.s. per completezza...

    codice:
    Dim foundrows As DataRow() = Tabella.Select("macaddress = '" & reg_macaddress & "'")
    
            If foundrows.Count = 0 Then
    
                MessageBox.Show("Nessun record")
            Else
    
                MessageBox.Show(foundrows.Count)
          
            End If

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Ricky85to
    Grazie
    Mi ero incartato su una cavolata...
    Ti avevo suggerito la strada sin dalla prima risposta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.