Zum Inhalt springen

bigpoint

Mitglieder
  • Gesamte Inhalte

    1.243
  • Benutzer seit

  • Letzter Besuch

Beiträge von bigpoint

  1. Original geschrieben von SwordMaster

    Den ODBC treiber richte ich einfach ein, indem das Installationsprogramm die nötigen Werte und Schlüssel in dei Regestry scheibt.

    e... was hat ODBC Treiber mit Registy zu tun, habe noch nie gehört ?!?!?

    Aber wie krieg ich es hin, dass die einträge in die Regestry, von der eingabe in das eingefügte Dialogfeld abhängen?

    End wieder ist es zu früh, oder ich verstehe dich überhaupt nicht ;((

  2. Original geschrieben von Klotzkopp

    Ich kann mir das nur so erklären, dass dieser Code in einer Memberfunktion einer Klasse steht, die von CCommand abgeleitet ist. Ist das der Fall?

    Ok jetzt ganz langsam,

    ich habe eine *.h und *.cpp ;)

    in *.h steht :


    class CTabell
    {
    public:
    CTabell()
    {
    memset( (void*)this, 0, sizeof(*this) );
    };
    // Die variablen von CTabell
    BEGIN_COLUMN_MAP(CTabell)
    //Die Spalten von CTabell
    END_COLUMN_MAP()
    };
    class testSet : public CCommand<CAccessor<CTabell> >
    {
    public:
    // Setzen der Parameter für den Zugriff auf die richtige DB.
    void SetDBParams(const CString& server, const CString& catalog, const CString& user, const CString& passwd);

    // DataSource und Session öffnen
    HRESULT OpenDataSource();

    private:
    CString mServer;
    CString mCatalog;
    CString mUser;
    CString mPasswd;
    };

    [/PHP]

    in *.cpp steht die SetDBParams und OpenDataSource :

    [PHP]
    HRESULT OpenDB::OpenDataSource()
    {

    CDataSource db;
    HRESULT hr = S_OK;
    CDBPropSet dbinit(DBPROPSET_DBINIT);

    // Windows Authenzifirung oder SQL Server
    if(!mUser.IsEmpty())
    {
    dbinit.AddProperty(DBPROP_AUTH_USERID, mUser);
    dbinit.AddProperty(DBPROP_AUTH_PASSWORD, mPasswd);
    }
    else
    {
    // Windows-User
    dbinit.AddProperty(DBPROP_AUTH_INTEGRATED, OLESTR("SSPI"));
    }
    dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);
    dbinit.AddProperty(DBPROP_INIT_CATALOG, mCatalog);
    dbinit.AddProperty(DBPROP_INIT_DATASOURCE, mServer);
    dbinit.AddProperty(DBPROP_INIT_LCID, (long)1031);
    dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);


    hr = db.OpenWithServiceComponents(_T("SQLOLEDB.1"), &dbinit);
    if (FAILED(hr))
    return hr;

    CSession session;
    session.Open(db);
    if (FAILED(hr))
    return hr;

    CDBPropSet propset(DBPROPSET_ROWSET);
    propset.AddProperty(DBPROP_MULTIPLECONNECTIONS, true);
    propset.AddProperty(DBPROP_IRowsetScroll, true);
    propset.AddProperty(DBPROP_IRowsetChange, true);
    propset.AddProperty(DBPROP_UPDATABILITY, (long)0 );


    if(FAILED(hr = CCommand<CAccessor<CTabell> >::Open(session, "SELECT * FROM dbo.Tabell ", &propset)))
    {
    AtlTraceErrorRecords(hr);
    return hr;
    }


    return MoveNext();

    }

    so rufe ich es:

     
    OpenDB opendb;

    opendb.SetDBParams(....);

    opendb.OpenDataSource();

    while(S_OK == opendb.cmd.MoveNext())

    {

    int k = opendb.m_ver;

    }

    [/PHP]

    gibt es eine andere Möglichkeit, ist es überhaupt korrekt was ich mache ????

  3. Original geschrieben von Klaus74

    hallo,

    habe eine größere abfrage im sql server 7.0 gebastelt.

    kriege aber leider ein timeout.

    kann man dieses irgendwie zurücksetzen?

    dann bräuchte ich das ding nicht amzustriken.

    danke im voraus.

    mfg

    klaus

    nicht dass ich wuste , wie lange läuft den der Server bis er in timeout kommt ??

  4. ich glaube es liegt in der Spalte denn hier sage ich den SQL Server das ich die daten verändern will, was muss ich hier schreiben wenn ich nur ein select ausführen will

    
    propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE );
    
    

  5. Fehler:

    
    ATL: OLE DB Error Record dump for hr = 0x80040e21
    
    ATL: Row #:    0 Source: "Microsoft OLE DB Provider for SQL Server" Description: "Fehler bei einem aus mehreren Schritten bestehenden OLE DB-Vorgang.  Prüfen Sie die einzelnen OLE DB-Statuswerte, falls vorhanden. Daten wurden nicht verarbeitet ." Help File: "(null)" Help Context:    0 GUID: {0C733A63-2A1C-11CE-ADE5-00AA0044773D}
    
    ATL: OLE DB Error Record dump end
    
    

  6. Noch einen Problem mit OLE DB

    Ich muß mit dem Progi auf SQL Server 2000 sowohl mit auch ohne Partitionierten Sichten.

    Wenn ich die DB ohne Partitionierten Sichten auswähle als verbindungs- DB dann funk wunder bar sobald ich aber auf die Partitionierte Sichten gehen knack hier

    
    hr = CCommand<CAccessor<CTabell> >::Open(session, "SELECT * FROM dbo.Tabell", &propset);
    
    

    , in hr steht

    -2147217887

  7. Original geschrieben von Saesh

    SQL-Datenbanken im Vergleich

    MS SQL

    * Clientsoftware auf allen Arbeitsplätzen nötig

    * Zugriff auf Datenbank über ODBC, dadurch eventuell Probleme durch Verwendung von verschiedenen ODBC-Treibern

    MS ACCESS

    * Zugriff auf Datenbank über ODBC, dadurch eventuell Probleme durch Verwendung von verschiedenen ODBC-Treibern

    Damit bin ich nicht einverstanden ;)

    Meinst Du nur durch ODBC

  8. Original geschrieben von Klotzkopp

    Ich kann mir das nur so erklären, dass dieser Code in einer Memberfunktion einer Klasse steht, die von CCommand abgeleitet ist. Ist das der Fall?

    ja es ist der Fall, aber trozd verstehe ich es nicht und ist es überhaupt sauber ?

  9. Hallo,

    also jetzt funktioniert obwohl ich es nicht verstehe warum ;(

    so hat nicht funktioniert:

    das habe ich in Heder


    CCommand<CAccessor<CTabell> > cmd;
    [/PHP]

    Das in cpp

    [PHP]
    hr = cmd.Open(session, "SELECT * FROM dbo.Tabell ", &propset);

    if (FAILED(hr))
    return hr;

    return hr;
    // return MoveNext(); wenn so dann kriege ich Fehler

    so funkt nur cpp:


    hr = CCommand<CAccessor<CTabell> >::Open(session, "SELECT * FROM dbo. Tabell", &propset);

    if (FAILED(hr))
    return hr;

    return MoveNext();

    [/PHP]

    Irgend wie ist es komisch, oder ?

  10. Original geschrieben von Klotzkopp

    Ja, das sieht gut aus. Sind in der Tabelle mehrere Felder?

    Falls ja, schreib bitte mal die tatsächlichen Feldnamen statt des * in das Select-Statement. Kann sein, dass die Reihenfolge in der COLUMN_MAP nicht auf die Reihenfolge der Felder passt, wie das Select sie liefert.

    Es sind mehre Spalte und die stehen in COLUMN_MAP habe auch richtige Reihenfolge

    Ich habe auch die tatsächlichen Feldnamen statt des * in das Select-Statement angegeben !?

    Egal welchen Feldname ich aufrufe steht nur 0 ?!?!?

    Irgend wie verstehe ich es nicht ;(

  11. Original geschrieben von Klotzkopp

    Hast du MoveNext aufgerufen?

    So mache ich es:


    OpenDB opendb;
    opendb.SetDBParams(....);
    opendb.OpenDataSource();
    while(S_OK == opendb.cmd.MoveNext())
    {
    int k = opendb.m_ver;
    }
    [/PHP]

    Es ist sehr mehrwürdig denn wenn ich so mache

    [PHP]
    hr = cmd.Open(session, "SELECT TOP 10 * FROM dbo.Tabell", &propset);


    OpenDB opendb;
    opendb.SetDBParams(....);
    opendb.OpenDataSource();
    int zeahler = 0;
    while(S_OK == opendb.cmd.MoveNext())
    {
    zeahler++;
    int k = opendb.m_ver;
    }
    [/PHP]

    Kriege ich auch in zeahler 10 zurück

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...