Avatar billede steensommer Praktikant
25. april 2004 - 01:15 Der er 11 kommentarer og
1 løsning

Tom forespørgsel

Hej

Jeg har lavet en forespørgsel i en access database. Jeg ville gerne have en MsgBox der fortalte hvis søgeresultatet er tomt - hvorledes gøres det i VB.Net

    Sub SøgNavn(ByVal Søgestreng As String)
        Dim Source As String
        Dim Connect As String
        Dim Conn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        Dim Dataadap As New OleDb.OleDbDataAdapter
        Dim dsny As New DataSet
        i = Søgestreng

        Source = "SELECT MEDICIN.NAVN AS Handelsnavn, MEDICIN.GENERISK_NAVN AS [Generisk navn], MED" & _
              "ICIN.TERAPEUTISK_GRUPPE AS [Terapeutisk gruppe], MEDICIN.VIRKNING AS Virkning, M" & _
              "EDCYP.CYP_ID AS [CYP gruppe] FROM (MEDICIN INNER JOIN MEDCYP ON MEDICIN.GENERISK_NAVN = MEDCYP.MEDICINNAVN) WHERE (MEDICIN.NAVN LIKE '" & i & "%')"

        Connect = "DSN=MS Access-database;DefaultDir=C:\Projekter\CYP450;DriverId=25;DBQ=C:\Projekter\CYP450\CYP450.mdb;MaxBufferSize=2048;FIL=MS Access;PageTimeout=5;UID=admin;"

        Conn.Open(Connect, "", "", -1)
        rs.Open(Source, Connect, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockBatchOptimistic, 1)
        Dataadap.Fill(dsny, rs, "Ny")
        DataGrid1.SetDataBinding(dsny, "Ny")

        Conn.Close()
    End Sub

vh Steen
Avatar billede henrikgn Nybegynder
26. april 2004 - 11:58 #1
Du laver en if-sætning der tester om recordsettet er tomt:

'forbind til database, lave forespørgsel og åben recordsettet

if rs.RecordCount = 0 then
  msgbox("Der er ingen resultater at vise")
else
  'fyld dataadapter og bind til datagrid
end if


Sådan burde det virke :)
Avatar billede steensommer Praktikant
27. april 2004 - 00:23 #2
Det virker fint - tak for hjælpen  :0)

vh Steen
Avatar billede burningice Nybegynder
27. april 2004 - 12:38 #3
hvad er lige ideen i at blande ADODB og ADO.Net sammen ?!
Avatar billede steensommer Praktikant
27. april 2004 - 12:41 #4
Ideén er selvfølgelig ikke tilstede - ovenstående er noget miskmask men jeg har svært ved at overskue hvordab jeg skal gøre det. Nedenståpende fungerer tilsyneladende - ser det bedre ud?

    Sub SøgNavn(ByVal Søgestreng As String)
        i = Søgestreng
        TextBox1.Text = ""

        Dim sPath As String = Application.StartupPath '.Environment.CurrentDirectory      'Dim Source As String

        Dim Conn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" & "data source=" & sPath & "\" & "CYP450.mdb;")

        Dim Command As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT MEDICIN.NAVN AS Handelsnavn, MEDICIN.GENERISK_NAVN AS [Generisk navn], MED" & _
                    "ICIN.TERAPEUTISK_GRUPPE AS [Terapeutisk gruppe], MEDICIN.VIRKNING AS Virkning, M" & _
                  "EDCYP.CYP_ID AS [CYP gruppe] FROM (MEDICIN INNER JOIN MEDCYP ON MEDICIN.GENERISK_NAVN = MEDCYP.MEDICINNAVN) WHERE (MEDICIN.NAVN LIKE '" & i & "%')", Conn)
        Command.CommandTimeout = 30

        Dim Dataadap As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
        Dataadap.SelectCommand = Command

        Dim dsny As DataSet = New DataSet
        Dataadap.Fill(dsny, "MEDICIN")
        DataGrid1.SetDataBinding(dsny, "MEDICIN")

        Conn.Close()

    End Sub

vh Steen
Avatar billede burningice Nybegynder
27. april 2004 - 12:43 #5
jeps.. det ser mere rigtigt ud
Avatar billede steensommer Praktikant
27. april 2004 - 12:45 #6
Tak for det ;0)
Kan en af jer overskue hvorledes ovenstående ifsætning kan bringes til at fungere i denne kode?
Avatar billede burningice Nybegynder
27. april 2004 - 13:21 #7
Dataadap.Fill(dsny, "MEDICIN")

if dsny.Items.Count > 0 Then
    DataGrid1.SetDataBinding(dsny, "MEDICIN")
End If
Avatar billede steensommer Praktikant
27. april 2004 - 13:58 #8
Hmm
Der fremkommer desværre følgende fejl:
'Items' is not a member of 'System.Data.Dataset'  med henvisning til dsny.Items
Avatar billede burningice Nybegynder
27. april 2004 - 16:56 #9
ah.. du skal have fat i din tabel først

dsny.Tables["Medicin"].Rows.Count

:)
Avatar billede steensommer Praktikant
27. april 2004 - 19:13 #10
Rows er desværre ikke en option efter Tables!!!
Avatar billede burningice Nybegynder
27. april 2004 - 21:20 #11
det kan ikke passe... Tables(string) returnere en Table som 100% sikkert har en property der hedder Rows



dsny.Tables("Medicin").Rows.Count
Avatar billede steensommer Praktikant
27. april 2004 - 21:29 #12
Næ det havde du da ret i - det var de firekantede parenteser der gjorde forskellen. Nu virker det - tak for hjælpen!!

vh Steen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester