OleDB Anzahl Datensätze

PinkoPalino

Grünschnabel
OleDB Datensatz rückwärts auslesen

Hallo!

Ich habe es jetzt endlich geschafft, auf eine Access-Datenbank zuzugreifen.
Zur demonstartion, wie ich auf die Datenbank zugreife, habe ich folgende Datenbank:
Tabellenname: main
Datenfelder: Name und Age, wobei Name als Primärschlüssel gilt.

Der Code folgt unten!

Bei meiner eigentlichen App, ist der Primärschlüssel ein Datum.

Mein Problem ist jetzt folgendes:
Ich habe ein Datum xy und möchte das nächste kleinere Datum ermitteln.
Nur weiß ich nicht, wie ich das Anstellen kann?!

Hier meine .h Datei für den Datenbankzugriff:
Code:
#pragma once

void InsertRecord(System::String^ nam, int age);
System::String^ ShowAge(System::String^ nam);
void updateRecord(System::String^ nam, int age);
void deleteRecord(System::String^ nam);

und hier die .cpp Datei:
Code:
#include "StdAfx.h"
#include "Datenzugriff.h"

using namespace System;
using namespace System::Data::OleDb;

void InsertRecord(String^ nam, int age)
{
	OleDbConnection^ conn = gcnew OleDbConnection(
		"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\test.mdb");

	conn->Open();

	OleDbCommand^ insertCommand = gcnew OleDbCommand();
	insertCommand->CommandText = L"INSERT INTO main(Name,Age) VALUES(?,?)";
	insertCommand->Connection = conn;
	insertCommand->Parameters->AddWithValue("Name",nam);
	insertCommand->Parameters->AddWithValue("Age",age);

	insertCommand->ExecuteNonQuery();

	conn->Close();
}

String^ ShowAge(String^ nam)
{
	OleDbConnection^ conn = gcnew OleDbConnection(
		"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\test.mdb");

	conn->Open();

	OleDbCommand^ selectCommand = gcnew OleDbCommand();
	selectCommand->CommandText = L"SELECT Age FROM main WHERE Name = ?";
	selectCommand->Connection = conn;
	selectCommand->Parameters->AddWithValue("Name",nam);
	OleDbDataReader^ rdr = selectCommand->ExecuteReader();

	String^ res;

	if(rdr->Read())
	{
		res = nam + " is " + rdr["Age"] + " years old";
	}
	else
	{
		res = "No matches found for " +nam;
	}

	conn->Close();

	return res;
}

void updateRecord(String^ nam, int age)
{
	OleDbConnection^ conn = gcnew OleDbConnection(
		"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\test.mdb");

	conn->Open();

	OleDbCommand^ updateCommand = gcnew OleDbCommand();
	updateCommand->CommandText = L"UPDATE main SET Age=? WHERE Name='?'";
	updateCommand->Connection = conn;
	updateCommand->Parameters->AddWithValue("Age", age);
	updateCommand->Parameters->AddWithValue("Name",nam);

	int x = updateCommand->ExecuteNonQuery();
	conn->Close();

}

void deleteRecord(String^ nam)
{
	OleDbConnection^ conn = gcnew OleDbConnection(
		"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\test.mdb");

	conn->Open();

	OleDbCommand^ deleteCommand = gcnew OleDbCommand();
	deleteCommand->CommandText = L"DELETE * FROM `main` WHERE Name = ?";
	deleteCommand->Connection = conn;
	deleteCommand->Parameters->AddWithValue("Name",nam);

	deleteCommand->ExecuteNonQuery();
	conn->Close();
}

Kann mir da jemand helfen?
Danke
 
Zuletzt bearbeitet:
Die Anzahl hätte ich ja schon, aber das nutzt ja nicht viel:

Code:
	OleDbCommand^ selectCommand = gcnew OleDbCommand();
	selectCommand->CommandText = L"SELECT COUNT (*) AS Datum FROM Abrechnung";
	selectCommand->Connection = DbConnection;

	OleDbDataReader ^dr = selectCommand->ExecuteReader();
	dr->Read();
	Object ^val = dr->GetValue(0);
	int anz = Convert::ToInt32(val);
 
Zurück