zusammenzählen einer spalte.

  • #1
L

Lenzi

Bekanntes Mitglied
Themenersteller
Dabei seit
07.04.2003
Beiträge
61
Reaktionspunkte
0
hallo,

in meiner datenbank hab ich ein feld gesamtsumme, ist bisher ein varchar feld. Jetzt möchte aber von mehreren datensätzen die gesamtsumme ausrechnen lassen. jetzt wäre meine erste frage, da ja SUM kein varchar nimmt, welchen feld typ ich da nehmen soll für die gesammtsumme, oder ist es möglich irgendwie dieses varchar feld im sql statement zu konvertieren oder so?


viele dank füreure hilfe schon mal !!

servus lenzi
 
  • #2
Hi

Für Zahlen würd ich mal sowas wie INTeger Typ probieren :)

Gruß, Michael
 
  • #3
naja.. danke ;D

wenn du mir jetzt noch sagst wie ich bei nem integer ne zahl wie 10,00 oder 0,12 oder mit 10.09 abspeichere dann bin ich mit deiner aussage sehr zufrieden ;)*g*
 
  • #4
Nichts für ungut, aber wer hat sich diese blödsinnige Datenbankstruktur denn ausgedacht? ;)
Scheinbar funktioniert mit der ja nichts, was Du vorhast.
zahl wie 10,00 oder 0,12 oder mit 10.09 abspeichere
Gar nicht, denn mal . und mal , als Dezimaltrenner funzt eh nicht.
Ansonsten würde ich Float oder Double, oder wie immer der entsprechende Typ beim SQL Server heisst, nehmen.
Aber viel wichtiger, ich würde über ein Redesign nachdenken.

Eddie
 
  • #5
naja.. jeder fängt mal an und macht n scheiss ;)..

ich hab jetzt mal das gmacht... ich hab die spalte als float gemacht, hab dann manuell im SQLServer, preise eingegeben wie: 1,00 2,02, hab dann mal probeirt mit SUM() das auszurechnen, das funktionierte.

jetzt hab i nur das problem, wenn ich in der eingabemaske bei der ASP seite preise wie 1,01 eingebe, und dann auf eintragen klicke, dass er mir dann das speichern nicht zulässt, weil es unmöglich war einen varchar typen in float umzuwandeln.. wieso kann ich aber im SQL Server zahlen mit komma eingeben??

würd mich über ne antwort freuen, servus
 
  • #6
Poste mal dein INSERT-Statement bitte... könnte mir vorstellen, dass da der Fehler liegt.

Greetz
M.
 
  • #7
strSQL = INSERT INTO tblBuchungen & _
(PatientenNummer,LieferantenNummer,ArtikelNummer,ArtikelAnzahl,EinzelPreisPatient,EinzelPreisHausBKP,SummePatient,SummeHausBKP,EintragsDatum,Bearbeiter,AuftragsNummerintern,AuftragsNummerextern,EintragsNummer,anzahlstunden,stundenPreis) & _
Values ( & _
-> & strPatientenNummer &->, & _
-> & strLieferantenNummer &->, & _
-> & strArtikelNummer &->, & _
-> & strArtikelAnzahl &->, & _
-> & strEinzelPreisPatient &->, & _
-> & strEinzelpreisHausBKP &->, & _
-> & strPatientenSumme &->, & _
-> & strSummeHausBKP &->, & _
-> & strDatum &->, & _
-> & strBearbeiter &->, & _
-> & strAuftragsNummerintern &->, & _
-> & strAuftragsNummerextern &->, & _
' & strNummer &->, & _
' & strStunden &->, & _
-> & strStundenPreis &->)


das wäre mein Code, vielen dank für deine hilfe !!
 
  • #8
hmm. Das Statement scheint in Ordnung zu sein.... ich selbst habs mal mit PHP (auch mit kleiner Eingabemaske) und ner MySQL-Datenbank versucht. Dort hab ich festgestellt, dass MySQL die Zahlen, die tatsächlich erstmal als String übergeben werden, parst... Eine korrekte Fließkommazahl wird mit nem Punkt als Dezimaltrenner angegeben. Wenn man jetzt statt . ein , nimmt, dann gibts keinen Fehler (jedenfalls bei mir nicht), weil MySQL alle Zahlen speichert, die bis zum ersten falschen Zeichen ermittelt werden konnten. Bei 12,34 wird also die 12 gespeichert. Bei Eingabe von abc wird eine 0 gespeichert...

Von daher bin ich jetzt auch überfragt... Bekommst du eine definitive Fehlermeldung? Wenn ja, dann auch die mal posten...

Grüße
M.
 
  • #9
es wäre durchaus möglich, dass die Anzeige sich nach der Ländereinstellung des Servers richtet. Dass heisst Dir werden die Zahlen mit Komma als Trenner präsentiert (eventuell kannst Du die Language/Territory Einstellung umstellen. Das ist allerdings mit Vorsicht zu geniessen, da man nie weiss, welche Seiteneffekte eine solche Umstellung hat.

Nichtsdestotrotz kann die Datenbank halt nur mit echten Werten rechnen, und bei Float/Number Werten ist der Trenner eben der Dezimalpunkt (englisch/amerikanisches System).

Du könntest zum Beispiel alle varchar Zahlen laden, mittels einer Stringfunktion die Komma in Punkte umwandeln und den entsprechenden Wert in eine (neue?) Spalte einfügen. Falls Du Excel zur Hand hast, kannst Du Dir die Werte ja auch mit Excel umformatieren lassen und die Daten dann neu laden.

Das ist halt das alte Problem, wie deutsche Zahlenwerte in einer Datenbank gespeichert werden. Die Darstellung von 123.788,00 ist zwar schön, aber der Wert ist und bleibt halt 123788.00.
 
Thema:

zusammenzählen einer spalte.

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben