1. Vilket är det bästa sättet att integrera SQL och vb? Jag brukar använda mig av ADODB-objektet direkt, kika på denna kursen: Skippa adodc kontroll. Är ett gamalt arv. Om du vill arbeta databundet bör du istället använda ett DataEnviroment. Slipper du skapa en kontroll per formulär. Hur gör man det? Blanda inte in dao i det. ADO Data Control (ADODC) och Dataenviromentet använder båda ADO. Fördelen med Dataenviromentet är att du återanvänder anslutningen. ADODC är klumpig. Måste skapa en instans av det för varje rowsource du använder, om du har flera öppet samtidigt. Annars kan du ju gå över till att koda Initiering av objekten och binda dem med kod. Eller enbart köra med kod mot objekten. Tackar Andreas Hillqvist, jag behärskar dock inte det här fullt ut så jag känner mig fortfarande osäker...Databas problem i VisualBasic
är det genom adodc kontroll och recordsource eller finns det något bättre sätt?
2. Jag ville lägga till en ny rad till min tabell så jag gjorde följande:
Jag la in SQL uttrycket under i strängen record
kod:
--------------------------------------------------------------------------------
insert into "tabell" (insert into "tablename"
(first_column,...last_column)
values (first_value,...last_value);
--------------------------------------------------------------------------------
sedan satte jag den som recordsource:
kod:
--------------------------------------------------------------------------------
With frmTelefonbok!adoAdresser
.RecordSource = record
.Refresh
End With
--------------------------------------------------------------------------------
Nu kommer det skumma, det läggs till en ny rad i tabellen men jag får ändå ett felmeddelande från adodc kontrollen som lyder:
Operation is not allowed when the object is closed.
Väldigt skumt!
Kan någon snäll människa hjälpa mig med detta?
Om inte kanske ni har någon bättre lösning på problemet.
Helst med adodc kontroll eftersom hela mitt projekt är uppbyggt kring den.
3. Hur extraherar jag tabellnamnen från en databas?
Jag använder adodc kontroll, kopplad till en datagrid.
Jag passar på att tacka på förhand...
/AndreasSv: Databas problem i VisualBasic
http://www.pellesoft.nu/login/articles/vb/adovb.asp
/JohanSv: Databas problem i VisualBasic
Sv: Databas problem i VisualBasic
Jag trodde adodc var det nyare och bättre och dao var det äldre.Sv: Databas problem i VisualBasic
Vilket som är best går inte att säga. Beror på förutsättningar och så mycket mer. Så här ser koden ut:
Option Explicit
Dim faltnamn(0 To 15) As String
Dim antal_faelt_alla As Integer
Private Sub cboTabell_Change()
Dim tabell As String
tabell = cboTabell.text
End Sub
Private Sub cmdOk_Click()
Dim i As Integer, text(0 To 15), record As String, record2 As String, buffert As String, _
faltnamn2(0 To 15) As String, antal As Integer
record = "Select * From dm02"
'------------------------------ Uppdaterar vad som ska visas från databasen
With frmTelefonbok!adoAdresser
.RecordSource = record
.Refresh
End With
antal_faelt_alla = frmTelefonbok!adoAdresser.Recordset.Fields.Count - 1
For i = 0 To antal_faelt_alla
faltnamn2(i) = frmTelefonbok!adoAdresser.Recordset.Fields(i).Name
text(i) = txtFaltnamn(i)
Next i
record = "insert into dm02 (" & faltnamn2(0)
record2 = "values ('" & text(0) & "'"
For i = 1 To antal_faelt_alla
If antal_faelt_alla < 1 Then
record = record & ")"
record2 = record & "');"
Else
record = record & ", " & faltnamn2(i)
record2 = record2 & ", '" & text(i) & "'"
End If
Next i
record = record & ") "
record2 = record2 & ") "
record = record & record2
Text1.text = record
With frmTelefonbok!adoAdresser
.RecordSource = record
.Refresh
End With
End Sub
Private Sub Form_Load()
Dim i As Integer, rubriklangd As Integer, record As String
Dim hojd As Integer
record = "Select * From dm02"
'------------------------------ Uppdaterar vad som ska visas från databasen
With frmTelefonbok!adoAdresser
.RecordSource = record
.Refresh
End With
antal_faelt_alla = frmTelefonbok!adoAdresser.Recordset.Fields.Count - 1
hojd = antal_faelt_alla * 567 + 3015
'frmLaggaTill.Height = hojd
frmLaggaTill.cmdOk.Top = hojd - 567
frmLaggaTill.Refresh
For i = 0 To antal_faelt_alla
'------------------------------ rubrik
faltnamn(i) = frmTelefonbok!adoAdresser.Recordset.Fields(i).Name
'-------------------------- rubriklängd
rubriklangd = Len(faltnamn(i))
'-------------------------- Storbokstav i början
faltnamn(i) = UCase(Left(faltnamn(i), 1)) & LCase(Right(faltnamn(i), rubriklangd - 1))
'-------------------------- Lägger till ":"
faltnamn(i) = faltnamn(i) & ":"
'-------------------------- Uppdaterar Caption och sätter fälten visble
lblfaltnamn(i).Caption = faltnamn(i)
lblfaltnamn(i).Visible = True
txtFaltnamn(i).Visible = True
Next i
End Sub