Newsgroup: it.comp.lang.visual-basic
Titolo: [? DAO] openrecordset

Vb6 sp3 con database access 97
Non funziona l'openrecordset (nessuno dei vari metodi che ho elencato)
mentre le istruzione nella form4 funzionano (ergo il db lo apre!!!)
che posso fare????
plz help!!!!
Ciao e grazie
Option Explicit
Public Const Nul = ""
Public Db As Database
Public rst As Recordset
nel modulo!
Sub main()
    Set Db = OpenDatabase("irpef.mdb", True)
    Set rst = Db.TableDefs(2).OpenRecordset
    Set rst = Db.TableDefs("anagrafe").OpenRecordset
    Set rst = Db.OpenRecordset("anagrafe"
    Set rst = Db.OpenRecordset("Select * from anagrafe")
    Form4.Show
End Sub
Nella form4
Private Sub Form_Load()
    Dim tb As TableDef
    For Each tb In Db.TableDefs
        Me.List1.AddItem tb.Name
    Next
    Set tb = Nothing
End Sub

Credo che tu non riesca ad aprire il rc perchè non apri il Db in modo
corretto. Nell'opendatabase non metti il percorso del Db e credo che il true
sia inutile. Metti app.path & "\Nome.mdb" nell'opendatabase e vedi se
funziona con db.openrecordset.
Ciao Luciano.







...

non cambia nulla... (il true serviva per il modo esclusi vo)
ciao .. help me!!!!

     Set rst = Db.OpenRecordset("Select * from anagrafe")
anche questo dovrebbe andare, aprendoti direi un rs dynaset. magari
controlla la sintassi di openrecordset, se ci va type=1 o simili.


non c'e' gia' una costante null o vbnull di vb ?
vbnull non so.. ma Null esiste ma è diversa da stringa vuota
la seguente istruozione non da errori:
Db.tabledef("anagrafe").OpenRecordset
.. ma se gli metto davanti un set si ibippa....
ho 2 mauali (uno apposta per il database) e ho consultao l'help in linea, ma
non sono riuscito a trovare il problema... non è che dimentico qualche
impostazione prima... tipo collegare il progetto a qualcosa????
Ragazzi sono davvero disperato (e anche un po' ic..ato!)

.. ma se gli metto davanti un set si ibippa....
se poi esguo qusta mi dice che non trova elementi...
For Each RstAna In Db.Recordsets(0)
        MsgBox RstAna.Fields(0).Name
 Next
rstana è dichiarata come public recordset

se faccio
set obj = Db.tabledef("anagrafe").OpenRecordset
con obj uguale a object  o a variant funziona...

Prova a spostare il codice di apertura del Db e del rst nel load della form
(portati anche la dichiarazione delle variabili) e usali da li.
Ciao Luciano.

Luciano ha scritto nel messaggio ...


nada...
 continua a non fungere

 End Sub
piccola nota: se possibile, evito cicli come il tuo nel load. preferisco
chiamarli a bocce ferme:
metti un cmdStructure, sul form1 o sul form4. il db essendo pubblico lo
devono vedere tutti.
(nb: ho adattato un codice che prevede un list e dei checkboxes, se ne trovi
adattalo)
Private Sub cmdStructure_Click()
    On Error GoTo errman
    Dim td As TableDef, prp As Property, fld As Field, idx As Index
    Dim J As Long, vval
    For Each td In db.TableDefs
        If Left(td.Name, 4) <> "MSys" Then 'msys sono le tab di sistema
            debug.print "TABLE: " & td.Name
            'If chkTProp = 1 Then
                For Each prp In td.Properties
                    vval = ""
                    vval = prp.Value
                    txt = IIf(vval <> "", prp.Name & ": " & prp.Value,
prp.Name)
                    debug.print "---" & txt
                Next
            'End If
                For Each fld In td.Fields
                    debug.print "------FLD: " & fld.Name
                    'If chkFProp = 1 Then
                        debug.print "---------Type: " & fld.Type & Chr(9) &
"(" & TipoCampo(fld.Type) & ")"
                        debug.print "---------Size: " & fld.Size
                        debug.print "---------Required: " & fld.Required
                    'End If
                Next
                For Each idx In td.Indexes
                    debug.print "------IDX: " & idx.Name
                    'If chkIFlds = 1 Then
                        For Each fld In idx.Fields
                            debug.print "---------" & fld.Name
                        Next
                    'End If
                Next
            debug.print "==========================="
        End If
    Next
    Exit Sub
errman: MsgBox Error: Exit Sub
End Sub

 .. ma se gli metto davanti un set si ibippa....
non dovrebbe essere:
set rst = Db.OpenRecordset("anagrafe")
?

riproviamo.
grazie di cuore, anche del codice che mi hai passato, anche se non capisco
cosa intendi con 'bocce ferme' e perché è conveniente [:-)] ...
in ogni caso adesso me lo studio e vedo di capirci qlcosa :-)
per il primo problema ho scoperto l'arcano e adesso vi spiego che magari
serve pure a qualcun'altro :-)... non so se lo ritenete opportuno girate la
'scoperta' sul sito web...
Dunque il problema nasceva dal fatto che il programma era nato con i command
ADO (ho deciso di passare a Dao perché il db è in locale e pesa meno con i
secondi... così ho letto, e  mi hanno confermato, anche se non so di preciso
il perché ma posso immaginarlo...) aggiungendo al progetto un po' di ocx,
activex e dll.... il che probabilmente lo mandava in confusion in fatti io
avevo due tipi di vairabili chiamati recordset, ma l'utilizzo di una
qualsiasi di queste due non risolveva il problema... la scoperta è nata da
un colpo di genio alquanto occasionale.. cmq
la soluzione è la seguente...
DIM Rst AS DAO.Recordset
.... non faccio commenti sul fatto che né mauali né l'help in linea lo
riportasse come istruzione ne lo ventilasse lontanamente in qualche sua
parte vagamente riconducibile al problema che io ho riscontrato...
Mi scuso per il tempo che vi ho fatto perdere :-)
Umilmente vostro
STrahd il signore dei vampiri (il mio ego aveva bisogno di un po' di rivalsa
:-))))

 End Sub


 ha scritto


una curiosita': donde viene un nome cosi' austro-ungarico ? :)
eheheheh
come puoi immaginare non è il mio vero nome ma un nick
cmq è un personaggio inventato da Tracy Hickman e figlia (mi pare!) ed un
vampiro... + o - e viene da una regione (di un mondo non precisato) simili
alla nostra europa dell'est (ma vah!!!) :-))

è uguale.... credo...
cmq funzionano entrambe.. una volta scoperto l'aracano del dao.
--
Saluti da Barovia
Strahd von Zarovich
IHGGer #893