Sieht schwer nach BCB aus... Dafür gibt es ein eigenes Forum.
Natürlich bekommst Du immer nur den ersten Wert.
do
{
// Verarbeitung
} while (Query->FindNext());
Das FieldValues, in Verbindung mit der Stringübergabe macht mich auch ein bißchen stutzig. Möglicherweise solltest Du FieldByName verwenden. Dann kannst Du die Felder aus der DB gezielt abrufen und mußt nicht das Programm anpassen, wenn Du die Tabellenstruktur änderst.
Ne, hab die Idee jetzt verworfen, und wie du weiter oben schon vorgeschlagen hast, eine zusätzliche Spalte level eingefügt. Funktioniert prima und ich bin soweit auch zufrieden.
mantiz, vielen vielen Dank für deine Hilfe, hast mir wirklich sehr gut geholfen!
Linnea schrieb:
3. schau in der BCB-Hilfe unter "Format-Strings für Datums- und Zeitwerte", dort steht auch der Bezeichner für Millisekunden mit drin
wenn du dir das richtige Thema in der Hilfe angeschaut hättest, wärst du auf folgendes gestoßen:
z Zeigt die Millisekunde ohne führende Null an (0-999).
zzz Zeigt die Millisekunde mit führender Null an (000-999).
Ich habe soeben eine Verbindung mit einem MSSQL-Server hinbekommen. Doch wenn ich versuche mit meinem falschen Passwort zu verbinden, bekomme ich eine Fehlermeldung: "This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information."
CDatabase db;
CString ODBC;
ODBC = "DRIVER={SQL Server}; PORT=1433;SERVER=127.0.0.1;DATABASE=;Uid=test;Pwd=wrong";
cout<<db.OpenEx(ODBC,db.noOdbcDialog);
db.Close();
Hallo,
ich habe hier ein kleines SQL Problem, bei dem ich nicht so recht weiter komme.
Und zwar folgendes, ich möchte in einer Relation, die einen zusammengesetzten shclüssel enthält, einen Teil ersetzen.
Die Regeln für das ersetzen befinden sich in einer Umsetzungstabelle in welcher der alte Werte und der neue Wert drin stehen.
Das sieht zm Beispiel so aus:
INSERT INTO umsetz VALUES ('321310001','321130001' );
INSERT INTO umsetz VALUES ('321310002','321130002' );
INSERT INTO umsetz VALUES ('321310003','321130003' );
INSERT INTO umsetz VALUES ('321310004','321130004' );
Nun habe ich die besagte Tabelle mit den zusammengesetzten Schlüsseln, wo der eine Wert halt ersetzt werden soll.
Die Schlüssel sehen dann z.B. so aus:
321310001,-100
321310001,-300
321310001,-500
Wobei der linke Teil der ist, welcher ersetzt werden soll und inv_nr heißt.
Nun habe ich mein Update folgendermaßen versucht:
UPDATE kto_pos SET inv_nr = ( SELECT neu FROM umsetz u WHERE u.alt = kto_pos.inv_nr AND ROWNUM = 1);
Das ganze soll auf einer Oracle Datenbank laufen, deshalb das ROWNUM.
Das habe ich überhaupt nur deshalb eingbaut, weil ich sonst ja 3 Zeilen bekommen würde, was ja aber zuviel für das Update ist.
Trotzdem bekomme ich den Fehler:
UPDATE kto_pos SET inv_nr = ( SELECT neu FROM umsetz u WHERE u.alt = kto_pos.inv_nr AND ROWNUM = 1 )
*
FEHLER in Zeile 1:
ORA-00001: Verstoß gegen Eindeutigkeit, Regel (ANLA1211.INV_JAHR159)
Wo ist das Prblem?
Danke soweit schon mal für Deine Hilfe
Jetzt habe ich noch einen Fehler, finde ihn aber nicht.
#include <windows.h>
#include <string.h>
#include <C:/mysql/include/mysql.h>
#include <time.h>
#include <stdio.h>
int db_query(MYSQL *mysql, const char *anfrage, int index) //schreibt in DB oder liefert GENAU einen Wert zurück
{
MYSQL_RES *erg;
MYSQL_ROW zeile;
//unsigned int anz_felder;
int err = mysql_real_query(mysql, anfrage, strlen(anfrage));
if (err != 0)
printf("Abfrage %s konnte nicht erfolgreich ausgefuehrt werden!", anfrage);
if (index != -1)
{
erg = mysql_store_result(mysql);
if (erg)
{
//anz_felder = mysql_num_fields(erg);
while (zeile = mysql_fetch_row(erg))
{
return ((int)zeile[index]);
}
}
}
return -1;
}
int main ()
{
MYSQL *mConnection, mDB;
int mError;
mysql_init(&mDB);
mConnection = mysql_real_connect(&mDB,"127.0.0.1","root","","hp",0,0,0);
if (mConnection == NULL)
{
printf("Es konnte keine Verbindung zur Datenbank hergestellt werden: %s",mysql_error(&mDB));
return 1;
}
else
{
printf("Es wurde erfolgreich eine Verbindung hergestellt!");
/*c:\Dokumente und Einstellungen\Chris\Desktop\libmysqltest\myTest.c(47): error C2143: Syntaxfehler: Es fehlt ';' vor 'eingeben'
*/ int erg = db_query(&mDB, "SELECT * FROM Packstuecke", 3);
}
mysql_close(mConnection);
return 0;
}
Vor eingeben? Bei mir ist nix mit eingeben...
Danke schon mal, aber ich muss doch noch mal nachfragen:
Gut, aber Woerter mit de werden ja zB nicht gebracht (bspw. "désactiver") - oder heisst das nur, dass zusaetzlich zu den Wildcards noch ein empty space angehaengt wird? bspw "de %", "% de %", "% de"?
Ist so eine Suche denn eigentlich effektiv. So etwas aehnliches hatte ich mir auch schon ueberlegt, aber da werden doch saemtliche DB-Eintraege durchgegangen ob sie entsprechendes enthalten. Ist es nicht schneller, gleich die Eintraege entsprechend (geht das ueberhaupt?) anzulegen, um dann eine effektivere/schnellere Suche zu ermoeglichen? Welche Moeglichkeit gaebe es dann?
Gibt es irgendwelche bekannten Schwierigkeiten bei der Konvertierung von Access 97 Datenbanken auf Access 2003?
Das irgendein Code nicht mitgenommen wird oder ähnliches?
Wäre für alle Anhaltspunke oder ähnliches dankbar.
MFG
In der VBA Umgebung gibt es bei einem Unterpunkt den Befehl Klassenbibliothek hinzufügen. Dies musst du machen und dort dann deine Funktion definieren.
Hallo Leute!
Ich möchte Für mein Formular in Access einen Vorlagebutton machen der mir dann 1 Feld des Formulars automatisch ausfüllt (so weit so Gut) Das Feld soll aber Abhäning von einem Anderen Feld Ausgefüllt werden.
Bsp.:(ist nur ein Beispiel)
Feld 1: 19.06.06 (Füllt der Benutzter aus
Feld 2: Juni (Wird automatisch ausgefüllt
Mein Problem ist Folgendes Ich bin in VB nich besonders bewandert und da das Feld das ich ausfüllen möchte in einem Unterformular steckt hab ich jetzt gar keinen Plan mehr. Ich hoffe einer von euch versteht mein Problem und kann mir helfen.
mfg Bauarbeiterjoe
Naja gibt zwei unterschiedliche Wege sie "direkt" in den Quellcode zu schreiben:
// a) so wie es sich gehört ;-) - den JDBC-Code schreibst du selber
String sql = "SELECT empno FROM emp";
<hier dann die JDBC-API benützen>
// b) mit präprozessor (zB SQLJ), der übersetzt das in JDBC-code
# iter = { SELECT empno FROM emp } <- so ähnlich, hab kein bock nachzusehen
JDBC ist ODBC für Java (ist ja auch nur das O durch ein J ausgetauscht ;)). Wenn du dich für JDBC interessierst schau mal hier: http://www.javabuch.de/download.html Dieses sehr gute Buch enthält ein Kapitel über JDBC
MfG SideWinder
Hi
Datenbank reparieren und komprimieren war das erste was ich ausprobiert hatte, ohne Erfolg.
Es muss irgendwie mit der Excel Dateien zusammen hängen, nach dem ich die Datei gelöscht hatte ging es wieder.
Ich "kill" jetzt mit VBA die Datei bevor ich sie schreibe.
Vielleicht werden Excel Dateien mit der Zeit Korrupt
mfg
michel
SideWinder schrieb:
Mit guten Datenbanken auf jeden Fall möglich, mit Pseudo-Datenbanken wie MySQL 4.x wirst du eventl. Probleme bekommen.
MfG SideWinder
OK, ich kannte dies nur noch von Oracle und da ging es ohne Probleme