String or binary data would be truncated

Manii

Mitglied
Diese Fehlermeldung erhalte ich wenn ich einen InsertBefehl ausführen will. Komischerweise ging's gestern noch, und mir fällt keine Zeile ein, in der ich seit Gestern was geändert haben sollte. Vielleicht findet ihr ja was:

Code:
Sub saveLS()

    'Verbindung mit Datenbank herstellen
    Set cnn = New ADODB.Connection

    'On Error GoTo DB_Err

    cnn.Open " Provider=SQLOLEDB;Integrated Security=SSPI;" & _
                            "Persist Security Info=False;Initial Catalog=Lieferscheine; Data Source=BURTSCHERHELEN"

    'On Error GoTo DB_Err

    'Variablen deklarieren
    Dim LSNR As Double
    Dim ADRESSE As String
    Dim BESTNR As String
    Dim PROJEKT As String
    Dim AUFTRAG As String
    Dim KNDNR As String
    Dim UIDNR As String
    Dim LIEFERNR As String
    Dim DATUM As Date
    Dim ZEICHEN As String
    Dim LB As String
    Dim LINK As String

    'Werte zuweisen
    LSNR = Range("F6")
    ADRESSE = Worksheets(Application.Sheets(1).Name).Text1.Value       'Genaue Bezeichnung fehlt noch PETER FRAGEN
    BESTNR = Range("B18")
    PROJEKT = Range("F18")
    AUFTRAG = Range("I18")
    KNDNR = Range("K18")
    UIDNR = Range("B21")
    LIEFERNR = Range("F21")
    
    DATUM = Range("I21")
    DATUM = Format(DATUM, "mm.dd.yyyy")              'Tag und Monat vertauscht damit Ein- und Ausgabe richtig sind (30.12.2006)
    
    ZEICHEN = Range("K21")
    LB = Range("G23")
    LINK = Range("B7")
    
    On Error GoTo Tabelle_Err
    
    'Neues Recordset deklarieren
    Dim rs As New ADODB.Recordset
    rs.Open "SELECT *  FROM [Lieferscheine].[dbo].[Lieferscheinanzeige1] WHERE (dbo.Lieferscheinanzeige1.nLSNR = " & LSNR & ")", cnn

    On Error GoTo Insert:
    
    rs.MoveFirst
    
    On Error GoTo Insert:
   
    'Abfrage ob Insert oder Update
    If CInt(Val(LSNR)) = rs.Fields("nLSNR") Then
    rs.Close
    
    On Error GoTo Tabelle_Err
      
    'Datenbankwerte updaten
    rs.Open "Update Lieferscheine.dbo.Lieferscheinanzeige1 " & _
    "SET strADRESSE = " & "'" & ADRESSE & "'" & " , strBESTNR = " & "'" & BESTNR & "'" & ", " & "strPROJEKT = " & "'" & PROJEKT & "'" & "," & "strAUFTRAG = " & "'" & AUFTRAG & "'" & ", " & _
    "strKNDNR = " & " '" & KNDNR & "'" & " , strUIDNR = " & "'" & UIDNR & "'" & " , strLIEFERNR = " & "'" & LIEFERNR & "'" & " , dDATUM = " & "'" & DATUM & "'" & ", " & _
    "strZEICHEN = " & "'" & ZEICHEN & "'" & " , strLB = " & "'" & LB & "'" & " , strLINK = " & "'" & LINK & "'" & " " & _
    "WHERE (nLSNR = " & "'" & LSNR & "'" & ")", cnn
    
    MsgBox (LSNR & " erfolgreich verändert"), vbInformation Or vbOKOnly, "Datenbank"      'Meldungsfenster
    
    Else
     
Insert:
    rs.Close                            'Recordset schliessen
    'Datebankwerte einfügen
    rs.Open "Insert into Lieferscheine.dbo.Lieferscheinanzeige1 (nLSNR, strADRESSE, strBESTNR, strPROJEKT, strAUFTRAG, strKNDNR, strUIDNR, strLIEFERNR, dDATUM, strZEICHEN, strLB, strLINK) VALUES" _
    & "('" & LSNR & "','" & ADRESSE & "','" & BESTNR & "','" & PROJEKT & "','" & AUFTRAG & " ','" & KNDNR & "','" & UIDNR & "','" & LIEFERNR & "','" & DATUM & "','" & ZEICHEN & "','" & LB & "','" & LINK & "'" & ")", cnn
                
    MsgBox (LSNR & " erfolgreich hinzugefügt"), vbInformation Or vbOKOnly, "Datenbank"    'Meldungsfenster
    
    On Error GoTo Tabelle_Err
    
    End If
   
    Exit Sub
    
'Fehlermeldungen
'
DB_Err:
     MsgBox "Datenbank nicht vorhanden!" & vbCrLf, 16, "Warnung!"
End

Tabelle_Err:
         MsgBox "Keine Daten gefunden!" & Chr$(13) & "Prüfen Sie Ihre Eingabe!" & vbCrLf, 16, "Warnung!"
End
    
End Sub
 
Erledigt: Manche Zellen hatten über 50 Zeichen, was der Datenbank zuviel war, denn die Werte in der Datenbank waren auf varchar(50) festgelegt worden.
 
Zurück