Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Mer problem.........

Postades av 2001-09-21 00:48:00 - Tomas Karlsson, i forum databaser, Tråden har 2 Kommentarer och lästs av 738 personer

Jag har användt DELETE FROM för att slippa få dubletter av samma Projektnummer i databasen, men nu funkar det inte utan det blir en dublett varje gång jag lägger till en ny rad i Flexgriden......, har även försökt att spara med UPDATE men det funkar inte heller, update raden såg ut så här:

RS.Open "UPDATE TBL_ProjektLogg SET ProjektNummer =" & txtProjNr & ", Maskin = '" & Maskin & "',Matrial='" & Matrial & "',Arbete='" & Arbete & "',KostUtr=" & KostUtr & ",Offert='" & Offert & "',JobbJaNej='" & JobbJaNej & "',Other='" & Other & "',Kund='" & Kund & "',Namn='" & Namn & "',SummaTim=" & SummaTim & ",TimKost=" & TimKost & ",TotalSum=" & TotalSum & ", Dcon"

'-------------------------------------------------------------------------------

Nu ser koden ut så här:



Public Function SaveProjekt()
On Error GoTo ErrorTrap
Dim DBFileName As String
Dim Dcon As ADODB.Connection
Dim RS As ADODB.Recordset
Dim A As Integer
Dim txtProjNr As Long


DBFileName = GetIni("Databasinfo", "Path", App.Path & "\info.ini")


Set Dcon = New ADODB.Connection
Set RS = New ADODB.Recordset

Dcon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & DBFileName



RS.Open "DELETE FROM TBL_Projektlogg WHERE ProjektNummer=" & CurrentProjekt & "", Dcon



Dim RowCounter As Integer
For RowCounter = 1 To frmProjekt.MSFlexGrid1.Rows - 1


Set RS = New ADODB.Recordset
Dim R As Integer
Dim C As Integer
Dim ProjektNummer As Long
Dim Personal As String
Dim Maskin As String
Dim Arbete As String
Dim Matrial As String
Dim KostUtr As Long
Dim Offert As String
Dim JobbJaNej As String
Dim Other As String
Dim Kund As String
Dim Namn As String
Dim SummaTim As Double
Dim TimKost As Long
Dim TotalSum As Double



R = R + 1
C = 0
'1
ProjektNummer = frmProjekt.MSFlexGrid1.TextMatrix(R, C)
C = C + 1
'2
Personal = frmProjekt.MSFlexGrid1.TextMatrix(R, C)
C = C + 1
'3
Arbete = frmProjekt.MSFlexGrid1.TextMatrix(R, C)
C = C + 1
'4
Matrial = frmProjekt.MSFlexGrid1.TextMatrix(R, C)
C = C + 1
'5
Maskin = frmProjekt.MSFlexGrid1.TextMatrix(R, C)
C = C + 1
'6
If frmProjekt.MSFlexGrid1.TextMatrix(R, C) = "" Then
KostUtr = 0
Else
KostUtr = frmProjekt.MSFlexGrid1.TextMatrix(R, C)
End If
C = C + 1
'7
Offert = frmProjekt.MSFlexGrid1.TextMatrix(R, C)
C = C + 1
'8
JobbJaNej = frmProjekt.MSFlexGrid1.TextMatrix(R, C)
C = C + 1
'9
Other = frmProjekt.MSFlexGrid1.TextMatrix(R, C)
'10
Kund = frmProjekt.lblKund.Caption
'11
Namn = frmProjekt.lblNamn.Caption
'12
If frmProjekt.txtSummaTimmar = "" Then
SummaTim = 0
Else
SummaTim = frmProjekt.txtSummaTimmar
End If
'13
If frmProjekt.txtHourCost = "" Or frmProjekt.txtHourCost = "0" Then
TimKost = 0
Else
TimKost = frmProjekt.txtHourCost
End If
'14
If frmProjekt.txtTotalSum.Text = "" Or frmProjekt.txtTotalSum.Text = "0" Then
TotalSum = 0
Else
TotalSum = frmProjekt.txtTotalSum.Text
End If

RS.Open "INSERT INTO TBL_ProjektLogg (ProjektNummer, Personal, Arbete, Matrial, Maskin, KostUtr, Offert, JobbJaNej, Other, Kund ,Namn, SummaTim, TimKost, TotalSum) " & vbCrLf & _
"VALUES (" & ProjektNummer & ", '" & Personal & "', '" & Arbete & "', '" & Matrial & "', '" & Maskin & "', " & KostUtr & ", '" & Offert & "', '" & JobbJaNej & "', '" & Other & "', '" & Kund & "', '" & Namn & "', " & SummaTim & ", " & TimKost & ", " & TotalSum & ")", Dcon


C = 1
Next
Dcon.Close
Screen.MousePointer = Default
Exit Function
ErrorTrap:
MsgBox Err.Description
Exit Function
End Functio


Svara

Sv: Mer problem.........

Postades av 2001-09-21 08:34:00 - Anette Anderung

Hejsan

Har inte satt mig in i din kod just nu men jag tror att begreppen update och instert inte är riktigt "kristallklara" för dig :-)

När du använder INSERT skapas ALLTID en ny post i databasen. Om du då har en primärnyckel i databasen så får du inte lägga till en ny post som har SAMMA primärnyckel. Den får endast förekomma en gång.
INSERT SKA INTE HA NÅGON WHERE !! Posten finns ju inte !

Om du istället använder UPDATE. förutsätts det att posten redan finns och du ska ALTID ha med en WHERE.
Text "UPDATE tabellen set IDNR=12 WHERE IDNR=2"

Det du kan göra är att först kolla om posten finns i databasen för att veta om du ska använda UPDATE eller INSERT.

nåt liknande :

set rst=con.execute( "count(IDNR) from TABELLEN WHERE IDNR=" & dittVALUE)

if rst(0)>0 then ' Då finns posten redan
ANVÄND UPDATE
else
ANVÄND INSERT
end if

Det finns säker nåt fiffigare sätt att kolla om det finns nån post. Men principen är som ovan ( Andreas Hillvist kommer säkert med nåt "mer optimerat" alternativ :-)) )

Nettan


Svara

Sv: Mer problem.........

Postades av 2001-09-21 09:09:00 - Emma Magnusson

Lägg upp en stored procedure i databasen som sköter kollen om den ska uppdateras eller läggas in - då slipper du koda det i vb.

tex som följer:
<code>
CREATE PROCEDURE spLtArtikel
(@artNr INTEGER = 0,
@artTyp varchar(1),
@artBen varchar(30) OUTPUT)
AS

DECLARE @ErrorSave INT
SET @ErrorSave = 0

UPDATE tblArtikel SET artBen=@artBen, artArtTyp=@artTyp WHERE artArtNr=@artNr;

IF @@ROWCOUNT = 0
BEGIN
INSERT INTO tblArtikel VALUES (@artNr, @artTyp, @artBen)
IF @@ERROR <> 0
SET @ErrorSave = @@ERROR
END

RETURN @ErrorSave
</code>

denna kod returnerar även eventuellt felmeddelande.

Det enda du behöver göra sedan är att skicka med dina inparametrar till sp:n...

ex:

<code>
//sSp är namnet på sp:n
//sSQL är inparametrarna konkatenerade som följer för en annan sp:
//sCall = iSNr + ", " + iKundNr + ", " + iArtNr + ", '" + datLevDat;
//sCall = sCall + "', " + iPl + ", " + iAnt + ", " + iTur + ", '" + sTkn2 + "'";

String sCall = "EXEC " + sSp + " " + sSQL;
this.stmt.execute(sCall);
</code>

//Emma


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 708
27 958
271 751
816
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies